У меня есть сайт с 11 поддоменами. У меня есть один главный файл htaccess
в корневой папке public_html
который имеет общие общие черты, такие как cache
и т. Д. У меня есть отдельные файлы htaccess
в каждой из корневых папок поддомена, где я использую mod_rewrite
Я не могу заставить его переписать URL. Я пытаюсь изменить его с dundaah.com/days/content.php?day=thur
на более чистый dundaah.com/thursday
и на поддомены music.dundaah.com/days/content.php?day=thur
к music.dundaah.com/thursday
. Мой 1-й исследуемый код до сих пор dundaah.com/day/thur
меня до URL-адреса dundaah.com/day/thur
а второй до dundaah.com/thursday
прежнему дает мне ошибку 404. Я не изменил внутренние ссылки сайта, это пролет? Может ли кто-нибудь помочь? благодаря
<IfModule mod_rewrite.c> Options +FollowSymlinks # enable the rewrite engine RewriteEngine On RewriteCond %{REQUEST_URI} ^/days/content.php RewriteCond %{QUERY_STRING} ^day=([az]+)$ RewriteRule ^(.*)$ /days/%1? [R,L] # or for individual pages RewriteCond %{REQUEST_URI} ^/days/content.php RewriteCond %{QUERY_STRING} ^day=thur$ RewriteRule ^(.*)$ /thursday? [R,L] </IfModule>
Это сделает /thursday
работу (и все остальные дни), поместив ее в ваш основной .htaccess
и в ваши поддомены. Он также перенаправит ваши старые URL-адреса на новые.
Он будет работать, только если вы находитесь на Apache 2.4 или новее. Дайте мне знать, если вы этого не сделаете, и я обновлю ответ.
RewriteEngine on # Redirect old URLs RewriteCond %{QUERY_STRING} =day=mon RewriteRule ^days/content\.php$ /monday [R=301,END] RewriteCond %{QUERY_STRING} =day=tue RewriteRule ^days/content\.php$ /tuesday [R=301,END] RewriteCond %{QUERY_STRING} =day=wed RewriteRule ^days/content\.php$ /wednesday [R=301,END] RewriteCond %{QUERY_STRING} =day=thur RewriteRule ^days/content\.php$ /thursday [R=301,END] RewriteCond %{QUERY_STRING} =day=fri RewriteRule ^days/content\.php$ /friday [R=301,END] RewriteCond %{QUERY_STRING} =day=sat RewriteRule ^days/content\.php$ /saturday [R=301,END] RewriteCond %{QUERY_STRING} =day=sun RewriteRule ^days/content\.php$ /sunday [R=301,END] # Rewrite new URLs RewriteRule ^monday$ days/content.php?day=mon [END] RewriteRule ^tuesday$ days/content.php?day=tue [END] RewriteRule ^wednesday$ days/content.php?day=wed [END] RewriteRule ^thursday$ days/content.php?day=thur [END] RewriteRule ^friday$ days/content.php?day=fri [END] RewriteRule ^saturday$ days/content.php?day=sat [END] RewriteRule ^sunday$ days/content.php?day=sun [END]
Лучше всего делать дни отдельно, так как сценарий использует короткую форму, а новый URL – нет. Вы можете изменить их, если это необходимо, или сообщить мне, если я что-то упустил.
Оба Apache и nginx имеют концепцию внутренних и внешних перенаправлений.
То, что вы могли бы сделать для выполнения своей задачи, – создать «цикл переадресации», где /days/content.php?day=thur
будет redirect
/ R
(внешнее перенаправление) в /thursday
, тогда как /thursday
будет возвращаться обратно в /days/content.php?day=thur
, который изначально может выглядеть как цикл.
Видеть:
Это может быть сделано путем тестирования против запроса uri в каждом случае:
RewriteCond %{REQUEST_URI} ^/days/content.php$ RewriteCond %{QUERY_STRING} ^day=thur$ RewriteRule ^(.*)$ /thursday? [R,L] # external redirect RewriteCond %{REQUEST_URI} ^/thursday$ RewriteRule ^(.*)$ /days/content.php?day=thur [L] # internal redirect
Мои извинения, я был тем, кто использовал систему каталогов на моем сайте. Это тот, который использовал
public_html(www directory) -index.php -vidz(sub-domain) -index.php -days -_imports -css -js -php -content.php -contact.php
Это моя обновленная система
public_html(www directory) -index.php -vidz(sub-domain) -index.php -content.php -contact.php -assets -_imports -css -js -php
Это позволяет использовать ссылки как <a href='monday'>Mon</a>
и использовать правила перенаправления .htaccess
ниже.
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteRule ^monday$ content.php?day=mon [NC,L] RewriteRule ^tuesday$ content.php?day=tue [NC,L] RewriteRule ^wednesday$ content.php?day=wed [NC,L] RewriteRule ^thursday$ content.php?day=thur [NC,L] RewriteRule ^friday$ content.php?day=fri [NC,L] RewriteRule ^saturday$ content.php?day=sat [NC,L] RewriteRule ^sunday$ content.php?day=sun [NC,L] RewriteRule ^contact$ contact.php [NC,L] </IfModule>