Apache mod_rewrite特定的动态URL

时间:2015-02-19 04:55:12

标签: php apache .htaccess mod-rewrite syntax-error

我正在使用mod_rewrite将domain.com/index.php?=string写入domain.com/string。当机器人进入sitemap.html进行搜索引擎优化时,我需要让网站显示index.php?= sitemap。我尝试了很多变化,并使用代码获得/ 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]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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]