Я использую mod_rewrite для записи domain.com/index.php?=string в domain.com/string. Мне нужно, чтобы на веб-сайте отображался файл index.php? = Sitemap, когда робот отправляется в sitemap.html для целей SEO. Я попробовал много вариантов и получил /sitemap, чтобы показать /sitemap.html, используя код:
RewriteRule ^sitemap/?$ http://www.domain.com/sitemap.html [R]
Переписывание, по понятным причинам, не устраняет проблему, потому что на самом деле ищет sitemap.html не index.php? P = sitemap.
Действующие в настоящее время правила:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ index.php?p=$1& [L,NC]
Любая помощь приветствуется.
Просто добавьте это между обоими вашими правилами:
RewriteRule ^sitemap\.html$ index\.php?p=sitemap [L]
Итак, все выглядит так:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301]
RewriteRule ^sitemap\.html$ index\.php?p=sitemap [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ index.php?p=$1& [L,NC]
?=sitemap
Я всегда использую это как?p=sitemap
или что-то в этом роде