除了对sitemap.xml的请求之外,重写对default.php的所有请求

时间:2017-02-06 15:34:57

标签: php .htaccess

我正在使用htaccess将每个请求重写为default.php文件。

Options -Indexes

RewriteEngine On
RewriteRule ^  blog/default.php 

但我想提交我网站的sitemap文件(sitemap.xml)。那么请求http://example.com/sitemap.xml rewrites to -> blog/sitemap.xml.

我的尝试失败 - >

Options -Indexes

RewriteEngine On
RewriteRule ^sitemap.xml  blog/sitemap.xml
RewriteRule ^  blog/default.php  

我的htaccess规则显然没有变硬。但我是新手。请帮助。

2 个答案:

答案 0 :(得分:0)

我认为你可以使用RewriteBase来减少博客目录的路径。尝试类似:

RewriteEngine On # enable rewrite engine   
RewriteBase /blog/ # Set path "./blog" as a root
RewriteCond %{REQUEST_FILENAME} !-f # Excludes existed files from rewrite
RewriteCond $1 !^(default\.php|sitemap\.xml) # Setup $1 variable
RewriteRule ^(.*)$ default.php/$1 [L] # Process request params to default.php

答案 1 :(得分:0)

到目前为止规则还不错,虽然我猜,你会得到一个重写循环。为了避免循环,您可以在规则前加上重写条件,当请求者是真实文件时跳过规则

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^sitemap.xml$ /blog/sitemap.xml [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /blog/default.php [L]