2017-04-08 174 views
1

这里是.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文件。

回答

1

这里的每一个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] 
+0

确定。让我试试这个 –

+0

你可以用完整的代码替代方法吗? –

+1

用完整代码更新了答案。 – MrWhite