2013-11-22 4 views
1

Это правила перезаписи, которые я использую. На этом этапе я пытаюсь заставить плохие URL-адреса загружать index.php. Тег html <base href="/directory-name/" /> находится в верхней части index.php, поэтому мои css, изображения и другие активы загружаются должным образом.Модификация Перепишите нагрузку index.php на неверный путь

Options -Indexes +FollowSymLinks 
RewriteEngine On 

RewriteCond ${REQUEST_URI} ^.+$ 
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteRule^- [L] 

RewriteRule ^(.*)/(.*)/(.*) /index.php?x=$1&y=$2&z=$3 [L] 
RewriteRule ^(.*)/(.*) /index.php?x=$1&y=$2 [L] 
RewriteRule ^(.*) /index.php?x=$1 [L] 

Url Примеры:

www.domain.com/directory-name/ 
www.domain.com/directory-name/index.php 
www.domain.com/directory-name/index.php/arg1/arg2/arg3 

www.domain.com/directory-name/anything-here 
www.domain.com/directory-name/anything-here/arg1/arg2/arg3 

Первые 3 примера URL работать нормально и нагрузки index.php. Но 4-й и 5-й URL-адреса терпят неудачу и возвращают меня к корню html /, где существует индекс xampp. Я предполагаю, что неудача последнего переписывания URL-адресов связана с тем, что index.php находится в подкаталоге с корнем?

Как бы исправить это? Как заставить URL-адреса загружать www.domain.com/directory-name/index.php, даже если что-то еще находится в пути?

ответ

1

Попробуйте эти правила:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?x=$1&y=$2&z=$3 [L] 
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?x=$1&y=$2 [L] 
RewriteRule ^([^/]+)/?$ index.php?x=$1 [L] 
+0

Это работает очень хорошо, спасибо! – Maelish

+0

Добро пожаловать, рад, что это сработало для вас. – anubhava

+0

Для бонусного раунда, как добавить пользовательскую ошибку 404, если файл был extras-404.php? – Maelish

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