重写htaccess的规则是不工作
问题描述:
这里是.htaccess
规则:重写htaccess的规则是不工作
RewriteEngine On
RewriteRule ^([^/]*)$ content.php?seourl=$1 [L]
RewriteRule ^pdf/([^/]*)$ content-single.php?seourl=$1 [L]
RewriteRule ^browsepdf$ browse.php [L]
RewriteRule ^browsepdf-([^/]*)$ browse.php?page=$1 [L]
RewriteRule ^download/([^/]*)$ download.php?pdf=$1 [L]
RewriteRule ^sitemap.xml$ xmlsitemap.php [L]
Options -Indexes
这里的每一个URL指向content.php?seourl=$1
,甚至CSS,JS和图像文件。
这里有我需要的一些示例网址,
http://example.com/sjskjfsk21
http://example.com/asfasfasf43sf
http://example.com/pdf/fhfdhdh3432aaf
http://example.com/pdf/aisfyiahm2faf3
http://example.com/browsepdf
http://example.com/browsepdf-1
http://example.com/browsepdf-2
http://example.com/download/fjaskfjalsk3rs
http://example.com/download/usaydiy7aisydi
http://example.com/sitemap.xml
谁能请修复.htaccess
文件。
答
这里的每一个URL指向 “content.php?seourl = $ 1”
因为你的第一个(通用)规则捕获所有的请求。您需要更改订单,以便首先使用最具体的规则,最后使用最通用的(全部收集)规则。在你的情况下,你只需要将第一条规则移动到最后。例如:
RewriteRule ^pdf/([^/]*)$ content-single.php?seourl=$1 [L]
RewriteRule ^browsepdf$ browse.php [L]
RewriteRule ^browsepdf-([^/]*)$ browse.php?page=$1 [L]
RewriteRule ^download/([^/]*)$ download.php?pdf=$1 [L]
RewriteRule ^sitemap\.xml$ xmlsitemap.php [L]
RewriteRule ^([^/]*)$ content.php?seourl=$1 [L]
注:我反斜杠转义在sitemap.xml
点以匹配字面点,否则匹配任何字符。
即使是css,js和图像文件。
您可以在文件的开头让这些静态资源的例外,现有的指令之前。例如:
RewriteRule \.(js|css|png|jpg|gif)$ - [L]
对于任何以任何规定的文件扩展名结尾的URL,则停止处理当前的mod_rewrite规则。
或者(虽然效率可能稍低),但可以防止处理存在的文件请求。再一次,这在你现有的mod_rewrite指令之前。例如:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
然而,这必须立即检查对映射到请求的文件系统中的文件是否存在每一个请求。 (它也可以与上述规则如有需要相结合。)
UPDATE:带来了一起,我们有:
# Exclude any existing files from being rewritten
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
# Specific rewrites
RewriteRule ^pdf/([^/]*)$ content-single.php?seourl=$1 [L]
RewriteRule ^browsepdf$ browse.php [L]
RewriteRule ^browsepdf-([^/]*)$ browse.php?page=$1 [L]
RewriteRule ^download/([^/]*)$ download.php?pdf=$1 [L]
RewriteRule ^sitemap\.xml$ xmlsitemap.php [L]
# Any other requests for the form "/<anything>"
RewriteRule ^([^/]*)$ content.php?seourl=$1 [L]
确定。让我试试这个 –
你可以用完整的代码替代方法吗? –
用完整代码更新了答案。 – MrWhite