mod_rewrite не работает htaccess

У меня есть сайт с 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 , который изначально может выглядеть как цикл.

Видеть:

  • nginx redirect loop, удалите index.php из url

Это может быть сделано путем тестирования против запроса 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>