2014-09-30 3 views
0

У меня есть два веб-сайта: один для разработки, а другой для тестирования. Они оба являются подкаталогами/поддоменами на VPS..htaccess RewriteRule/RedirectMatch добавить трейлинг-косую черту, не работает

У меня есть идентичный файл .htaccess на каждом из них, чтобы добавить слэш с помощью 301 редиректа, а именно:

RewriteEngine On 

RedirectMatch 301 /dm/secure/([^/]+)$ /dm/secure/$1/ 

На месте разработки, когда я посетить URL без слэш, например, https://reports-dev.example.com/dm/secure/Client, он перенаправляет меня на https://reports-dev.example.com/home/example/public_html/reports-dev/dm/secure/Client/

На испытательном участке это не влияет - например, Посещение https://reports-test.example.com/dm/secure/Client остается на месте (и получает 404).

Я также попытался: - с помощью RewriteBase / и RewriteBase /dm/ и RewriteBase /dm/secure - с помощью RewriteRule /dm/secure/([^/]+)$ /dm/secure/$1/ [R=301,L]

Никаких изменений в результатах.

Я немного расстроен тем, что он не работает должным образом, но гораздо важнее то, что он ведет себя по-разному между dev и тестовыми сайтами.

В public_html есть уровень .htaccess на один уровень, но он не относится ни к одному сайту.

ответ

0

Ключевое значение - [R=301]. Это вызывает постоянную переадресацию, которые браузеры кэшируют и запоминают, не делая никаких запросов на веб-сервер. Таким образом, текущее содержимое файла .htaccess не имеет значения - что имеет значение только в кеше браузера.

Мораль истории: не используйте 301 переадресацию во время разработки.

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