/ / Url dinâmico específico do mod_rewrite do Apache - php, apache, htaccess, mod-rewrite, erro de sintaxe

URL dinâmico específico do mod_rewrite do Apache - php, apache, htaccess, mod-rewrite, erro de sintaxe

Eu estou usando o mod_rewrite para escrever domain.com/index.php? = string para domain.com/string. Eu preciso ter o site exibir o index.php? = Sitemap quando um robô vai para sitemap.html para fins de SEO. Eu tentei muitas variações e consegui / sitemap mostrar /sitemap.html usando o código:

    RewriteRule ^sitemap/?$ http://www.domain.com/sitemap.html [R]

A reescrita compreensivelmente não corrige o problema, no entanto, porque na verdade ele está procurando sitemap.html e não index.php? P = sitemap.

As regras atualmente em vigor são:

    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]

Qualquer ajuda é muito apreciada.

Respostas:

0 para resposta № 1

Basta adicionar isso entre ambas as suas regras:

RewriteRule ^sitemap.html$ index.php?p=sitemap [L]

Então parece tudo:

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]