#php #apache #.htaccess #mod-rewrite
#php #apache #.htaccess #mod-переписать
Вопрос:
Я использую следующие правила .htaccess на своем веб-сайте.
Используя это, я скрываю расширение php и создаю URL на основе seo.
теперь, когда я получаю доступ к странице, подобной
http://localhost/freelancer/happiechef/login or
http://localhost/freelancer/happiechef/sign
Он вызывает city.php страница, но я использовал city.php страница, когда я запрашиваю этот URL
http://localhost/freelancer/happiechef/california
Что-то не так в моих правилах .htaccess.
3 типа URL, которые я хочу :
1) http://localhost/freelancer/happiechef/california = будет вызываться city.php?city=$value
2) http://localhost/freelancer/happiechef/california/2/an-exploration-of-ramen = будет вызвано menu-details.php?city=$valueamp;mid=$valueamp;title=$value
3) http://localhost/freelancer/happiechef/california/2/an-exploration-of-ramen = будет вызван booking.php страница. Итак, url будет:http://localhost/freelancer/happiechef/california/2/an-exploration-of-ramen/booking
файл .htaccess :
ErrorDocument 404 /freelancer/happiechef/not-found.php
ErrorDocument 500 /freelancer/happiechef/not-found.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9_-] )/?$ city.php?city=$1 [NC,L]
#RewriteRule ^([A-Za-z0-9_-] )/([d] )/([A-Za-z0-9_-] )$ menu-details?mid=$2 [NC,L]
RewriteRule ^([a-zA-Z0-9_-] )/([a-zA-Z0-9_-] )/([a-zA-Z0-9_-] )$ menu-details.php?city=$1amp;mid=$2amp;title=$3
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
Комментарии:
1. Это приятно. Удачи с этим .htaccess. Очевидно, что мы ничего не можем сделать, чтобы помочь исправить это, поскольку вы не показали НАМ, что в этом файле. И это также не сервис для написания кода. Мы не собираемся запускать .htaccess для вас.
2. ООО. Это моя ошибка. Я обновил свой вопрос @MarcB
3. Где этот .htaccess находится в вашей файловой системе?
4. В корневой папке..
5. Где
city.php
существует и является/freelancer/happiechef/
реальным каталогом?
Ответ №1:
Предполагая, что /freelancer/happiechef/
это каталог. Следующий код должен работать в /freelancer/happiechef/.htaccess
:
RewriteEngine On
RewriteBase /freelancer/happiechef/
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([w-] )/([w-] )/([w-] )/?$ menu-details.php?city=$1amp;mid=$2amp;title=$3 [L,QSA]
RewriteRule ^([w-] )/([w-] )/([w-] )/([w-] )/?$ booking.php?city=$1amp;mid=$2amp;title=$3amp;action=$4 [L,QSA]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(. ?)/?$ $1.php [L]
RewriteRule ^([w-] )/?$ city.php?city=$1 [QSA,L]
Комментарии:
1. Ну, этот URL не работает
http://localhost/freelancer/happiechef/california/2/an-exploration-of-ramen/booking
он будет вызван booking.php страница, и мне нужно получить середину2. Да, вы должны сохранить обе
ErrorDocument
строки. Также сообщите, что такое внутренний (фактический)booking.php
URI. Например у нас естьmenu-details.php?city=$1amp;mid=$2amp;title=$3
3. Я добавил новое правило для
booking.php
. Обратите внимание на параметры запроса, которые вы можете изменить в соответствии с вашим кодом.