2014-11-25 2 views
1

У меня есть URL, которые я хотел бы получить доступ к другому:Несколько GET PARAMS в Htaccess mod_rewrite

Оригинал: mywebsite.com/index.php?page=index

Новое: mywebsite.com/index

Я делаю, что с этим .htaccess:

RewriteEngine on 

# The two lines below allow access to existing files on your server, bypassing 
# the rewrite 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule (.*) index.php?page=$1 [QSA] 

следующий URL (связанный с индексом):

Оригинал: mywebsite.com/index.php?page=hotel & отель = 5

Новое: mywebsite.com/hotel/5

Я нашел некоторую информацию о нескольких Params, но я не могу получить их работать.

ответ

3

Вы можете использовать новое правило для 2-х параметров:

RewriteEngine on 
RewriteBase/

# The two lines below allow access to existing files on your server, bypassing 
# the rewrite 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA] 

RewriteRule ^([^/]+)/([^/]+)/?$ index.php?page=$1&hotel=$2 [L,QSA] 
+1

работы, спасибо. Не могли бы вы объяснить «RewriteBase /» и «RewriteRule^- [L]»? – PrimuS

+0

'RewriteBase /' необязательно, но это хорошо для использования здесь. 'RewriteBase' в основном устанавливает путь к вашим файлам из текущего каталога .htaccess. 'RewriteRule^- [L]' означает «ничего не делать» для вышеуказанных условий, то есть если запрос предназначен для файла/каталога, тогда игнорируйте остальные правила. – anubhava

+0

Теперь я хотел «расширить» правило третьим параметром, который сейчас не работает, можете ли вы сказать мне, почему? 'RewriteRule^([^ /] +)/([^ /] +) /? $ Index.php? Page = $ 1 & hotel = $ 2 & vars = $ 3 [L, QSA]' – PrimuS