2015-03-03 5 views
1

У меня есть файл .htaccess для управления моим сервером Apache. После включения RewriteEngine On, у меня есть правила перезаписи, которая работает должным образом:mod_rewrite добавить полный каталог

RewriteRule ^display\.php/([a-zA-Z0-9-z\-]+)$ "https://pastelink.net/display?q=$1" [R=301,L] 

На следующей строке я пытаюсь добавить еще одно правило, в, чтобы перенаправлять sitemap.xml к sitemap.php.

Я попытался как:

RewriteRule ^sitemap.xml$ "https://pastelink.net/sitemap.php" [R=301, L] 

и

RewriteRule ^sitemap.xml sitemap.php [R=301, L] 

Как и другие комбинации, включая или опуская^$ и флаги. В результате каждый раз, когда это переписывание к этому:

https://pastelink.net/home/pastelin/public_html/sitemap.php 

когда мое намерение состоит в следующем:

https://pastelink.net/sitemap.php 

Почему эти дополнительные каталоги добавлены в URL? Я не понимаю, почему это по-другому относится к первому правилу перезаписи. Я могу опубликовать весь файл .htaccess, если это поможет, хотя флаг L должен сделать следующий код неуместным.

ответ

1

Вам не нужно http:// для бесшумных правил перезаписи. Сохраните свой root .htaccess следующим образом:

RewriteEngine On 
RewriteBase/

RewriteRule ^display\.php/([\w-]+)/?$ https://pastelink.net/display?q=$1 [R=301,L,QSA,NC] 
RewriteRule ^sitemap\.xml$ sitemap.php [NC,L] 

Перед тестированием этих изменений необходимо очистить кеш браузера.

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