#php #apache #.htaccess
#php #apache #.htaccess
Вопрос:
Возможно ли создать один URL-адрес с помощью htaccess? Ниже приведены примеры собственных URL-адресов, которые мне нужны.
пример:
localhost / блог (категория)
localhost/ часто задаваемые вопросы (содержание)
localhost /book (тег)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(en|de|tr)/?$ ?lang=$1 [QSA,NC,L]
RewriteCond $1 !^(css|js|images|inc|lang)
RewriteRule ^([0-9a-zA-Z-_] )-([0-9] )$ article.php?url=$1amp;id=$2 [L,QSA]
RewriteRule ^([0-9a-zA-Z-_] )$ article.php?caturl=$1amp;catid=$2 [L,QSA]
RewriteRule ^([0-9a-zA-Z-_] )$ tag.php?tagurl=$1amp;id=$2 [L,QSA]
Комментарии:
1. Это возможно, но вам понадобится один PHP-скрипт, а затем определите в скрипте, является ли параметр тегом, контентом или категорией. И, надеюсь, вы никогда не получите тег с именем blog
2. Почему бы не использовать
localhost/tag/XYZ
andlocalhost/category/XYZ
?
Ответ №1:
Поскольку нет «основных» различий, которые могли бы указать вам, что запрошенный URL-адрес указывает на определенный тип контента, я предложу 2 подхода :
1. Определите префиксы для маршрутов категорий, тегов и статей
RewriteRule ^/category/([0-9a-zA-Z-_] )$ article.php?caturl=$1amp;catid=$2 [L,QSA]
RewriteRule ^/tag/([0-9a-zA-Z-_] )$ tag.php?tagurl=$1amp;id=$2 [L,QSA]
RewriteRule ^/article/([0-9a-zA-Z-_] )-([0-9] )$ article.php?url=$1amp;id=$2 [L,QSA]
Перенаправить все URL-адреса на php-скрипт, который будет запрашивать базу данных и искать тип содержимого по URL
RewriteRule ^([0-9a-zA-Z-_] )-([0-9] )$ content.php?url=$1 [L,QSA]
а затем внутри этого content.php выполняйте запросы к таблице категорий,
если совпадений нет, поэтому ищите в таблице тегов … и так далее…
пока нет совпадений, перенаправляйте на страницу 404.
После того, как вы найдете соответствующий тип контента, вы можете включить соответствующий php-файл, чтобы продолжить обработку этого запроса.