如何将所有对index.php和sitemap.xml的请求重写为sitemap.php

时间:2018-07-12 00:14:25

标签: .htaccess mod-rewrite

请帮助,我已经做了2天了,一切都白费了...

此代码非常适合将目录和页面重写到一个index.php页面

    DirectoryIndex /index.php
    RewriteEngine on
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d

    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(.*) /index.php [NC,L]

    RewriteRule ^/sitemap.xml sitemap.php [L]

sitemap.xml的问题,因为它必须重写为sitemap.php而不是index.php

1 个答案:

答案 0 :(得分:1)

您需要将站点地图规则放在索引规则之前。规则从上到下进行处理,一旦达到索引规则(因为.*将与sitemap.xml相匹配),由于存在[L]标志,它将停止进一步处理。

另一种选择是仅在index.php等于include sitemap.php;时在$_SERVER['REQUEST_URI']sitemap.xml中使用php。结果相同。