2016-06-14 7 views
2

Отредактировано .htacess:.htaccess множественным переписывают не работает

RewriteEngine On 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3&key=$4 [L] 
RewriteRule ^(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3 [L] 
RewriteRule ^(.*)/(.*)/ api.php/$1/$2 [L] 

Это дает эту ошибку:

Internal Server Error

Update

Этот код работает:

RewriteEngine On 
    RewriteRule ^(.*)/(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3&key=$4 [L] 
    RewriteRule ^(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3 [L] 

только при добавлении этой линии он выходит из строя:

RewriteRule ^(.*)/(.*)/ api.php/$1/$2 [L] 
+0

Более конкретные правила должны появиться первые. – hjpotter92

+0

@ hjpotter92 Изменен в (выдает ошибку внутреннего сервера): (. *) (. *) (. *) (. *)? RewriteEngine On RewriteRule ^//// api.php/$ 1/$ 2 пары = $ 3 & key = $ 4 [L] RewriteRule^(. *)/(. *)/(. *)/Api.php/$ 1/$ 2? Param = $ 3 [L] RewriteRule^(. *)/(. *)/api.php/$ 1/$ 2 [L] –

+0

@ hjpotter92 Я прокомментировал новый код –

ответ

1

Это вызывает 500 внутренняя ошибка, потому что ваши правила бесконечно зацикливание. Это связано с тем, что ваш шаблон ^(.*)/(.*)/ также соответствует переписанному URI api.php/<whatever>/.

Вы должны пропустить все правила для существующих файлов и каталогов в верхней части:

RewriteEngine On 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^(.*)/(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3&key=$4 [L,QSA] 

RewriteRule ^(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3 [L,QSA] 

RewriteRule ^(.*)/(.*)/ api.php/$1/$2 [L,QSA] 

Я также предлагаю использовать якорь $ в шаблоне, чтобы защитить дальше.

+0

Я выполнил то, что я хотел от –

+0

Если вы заметили, что я также сделал предложение использовать '$' в своем ответе – anubhava

0
RewriteEngine On 

RewriteRule ^(.*)/(.*)/(.*)/(.*)/ api.php/$1/$2?organisation=$3&key=$4 [L] 
RewriteRule ^(.*)/(.*)/(.*)/ api.php/$1/$2?organisation=$3 [L] 
RewriteRule ^(.*)/(.*)/$ api.php/$1/$2 [L] 

выше решение, вероятно, также работает

Смежные вопросы