Apache mod_rewrite определенный динамический URL

0

Я использую 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]

Любая помощь приветствуется.

  • 0
    это нормально? ?=sitemap Я всегда использую это как ?p=sitemap или что-то в этом роде
Теги:
.htaccess
mod-rewrite
syntax-error

1 ответ

0
Лучший ответ

Просто добавьте это между обоими вашими правилами:

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]
  • 0
    Это сработало отлично, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню