2015-02-25 4 views
1

У меня есть следующий файл .htaccess:mod_rewrite вопрос с параметрами

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
RewriteRule ^portfolio-single/([^/.]+)/?$ portfolio-single.php?id=$1 [L] 

<Files ~ "^\.(htaccess|htpasswd)$"> 
deny from all 
order deny,allow 
</Files> 

Options -Indexes 

ErrorDocument 400 /error.php 
ErrorDocument 403 /error.php 
ErrorDocument 404 /error.php 
ErrorDocument 405 /error.php 
ErrorDocument 408 /error.php 
ErrorDocument 500 /error.php 
ErrorDocument 502 /error.php 
ErrorDocument 504 /error.php 

В настоящее время все страницы, которые заканчиваются с расширением PHP работает отлично. Так, например, www.somewebsite.com/blog.php теперь доступен через /blog. Однако я хочу, чтобы определенная страница, а именно, portfolio-single.php?id=123 была доступна через /portfolio-single/123. В 4-й строке вы можете увидеть код, который я взял из этого website, и я пытался заставить его работать, но продолжаю получать 404, когда я получаю доступ к портфолио-одиночному через /portfolio-single/123. Что мне не хватает? Следующий вопрос: если мне нужно перезагрузить XAMPP, чтобы изменения в файле .htaccess вступили в силу (пока это не сработало).

ответ

0

Для добавления .php расширения вы должны проверить, существует ли соответствующий файл .php флиртует:

RewriteEngine On 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}\.php -f [NC] 
RewriteRule ^(.+?)/?$ $1.php [NC,L] 

RewriteRule ^portfolio-single/([^/.]+)/?$ portfolio-single.php?id=$1 [L,NC,QSA] 
1

Попробуйте заменить два правила. Последнее правило более конкретное, поэтому оно должно совпадать в первую очередь.


Хотя ваш текущий подход работает, это чаще использовать один кетчуп все правила и общий сценарий ручки, который делает маршрутизацию.

RewriteRule ^(.*)$ handler.php?path=$1 [L] 

Тогда handler.php может решить, что делать с blog и portfolio-single/x и non-existing-page.

Теперь маршрутизатор может быть реализован на PHP, что дает вам больше свободы, например динамическое добавление маршрутов и совпадений на основе более регулярного выражения.

Другим преимуществом такого подхода является то, что ваше приложение теперь имеет единственную точку входа. Это упрощает загрузку, поскольку существует только один путь.

+0

спасибо за дополнительную информацию. хотя, поскольку мне нужно сделать это только на одной странице, я думаю, что сейчас оставлю это. но я определенно буду исследовать маршрутизаторы больше! – Alex

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