2013-04-03 4 views
0

У меня возникли проблемы с модом-переписывание переписать эти URL:Rename Url .htaccess

mywebsite.com/index.php?page=folder/file 
mywebsite.com/index.php?page=folder/file&id=10 

в эти

mywebsite.com/file 
mywebsite.com/file/10 

Как я могу это сделать?

+0

Вы что-нибудь пытались? – Phix

+0

не сложно найти это в веб-поиске – charlietfl

+0

Да, я пробовал это:^file /? $ /index.php?page=folder/file [NC, L] –

ответ

2

mywebsite.com/index.php?page=folder/file
mywebsite.com/index.php?page=folder/file&id=10
в эти
mywebsite.com/file
mywebsite.com/file/10

Это не t ясно, если папка является фиксированной строкой или каталогом, где файл есть, поэтому в этом ответе предполагается, что это фиксированная строка, поскольку каталог в обоих случаях является root.

Вы можете попробовать это в одном файле .htaccess в корневом каталоге:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !index\.php [NC] 
RewriteRule ^([^/]+)/?$ /index.php?page=folder/$1 [L,NC] 

RewriteCond %{REQUEST_URI} !index\.php [NC] 
RewriteRule ^([^/]+)/([^/]+)/? /index.php?page=folder/$1&id=$2 [L,NC] 

Карты беззвучно:

http://mywebsite.com/file в
http://mywebsite.com/index.php?page=folder/file

И

http://mywebsite.com/file/10 в
http://mywebsite.com/index.php?page=folder/file&id=10

Где строки файл и предполагаются быть динамичным.

Для постоянной переадресации, замените [L, NC] с [R = 301, L, NC]

+0

Я использую это, но не происходит, любая идея почему? –

+0

Попробуйте использовать [R, L, NC] вместо [L, NC] в обоих правилах, чтобы вы могли ** видеть ** перенаправленные URL-адреса. –

+0

Ничего не изменилось, URL по-прежнему http://mywebsite.com/index.php?page=folder/file, я не знаю почему. Я использовал этот индекс RewriteCond% {REQUEST_URI} \ .php RewriteRule^(. *) Index \ .php $/$ 1/[R = 301, L] ", чтобы удалить index.php, и это сработало, знаете ли вы, почему первый не работает? –

2

Вы хотите Somthing подобное этому

#With mod_rewrite 
RewriteEngine on 
RewriteRule ^/file/(.+) /index.php?page=folder/file&id=$1 [R,L] 
RewriteRule ^/file  /index.php?page=folder/file [R,L] 
+0

Нужно ли писать «mywebsite.com»? –

+0

нет, я собирался поститься. – bubba

0

Значит, вы хотите переписать и НЕ REDIRECT mywebsite.com/$var в mywebsite.com/index.php?page=folder/$var и mywebsite.com/$var1/$var2 в mywebsite.com/index.php?page=folder/$var1&id=$var2? Вы можете это проверить:

Options +FollowSymlinks 
RewriteEngine on 

RewriteRule ^([a-z0-9-_]+)$ /index.php?page=folder/$1 

RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)$ /index.php?page=folder/$1&id=$2