【发布时间】:2014-10-05 19:54:34
【问题描述】:
我正在尝试创建 mod_rewrite 规则以在我的 wordpress 网站中重定向以下网址:
www.mywebsite.com/pg/2/row/20/filter/all/filtercity/foo,bar
到
www.mywebsite.com/detail?pg=2&row=20&filter=all&filtercity=foo,bar
我的问题是 wordpress 在 .htaccess 中包含以下规则:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我尝试了以下 RewriteRule,如果我从 Wordpress 中评论最后一个 RewrireRule,它会起作用。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /index.php [L]]
RewriteRule ^pg/([a-zA-Z0-9]+)/?$ ?pg=$2 [R]
</IfModule>
# END WordPress
以上仅适用于类似的网址
www.mywebsite.com/pg/2 => www.mywebsite.com?pg=2
几个问题:
1 - 如何配置 .htaccess 以仅在找到以下键时处理 url
/pg 和/或 /row 和/或 /filter 和/或 /filtercity
对于所有其他 url,它应该执行标准的 Wordpress RewriteRule 。 /index.php
2 - url 也可以包含所有键或仅其中几个键。例如:
/pg/2/row/20
/行/20/过滤器/全部
如何配置 .htaccess 来处理所有不同的键组合?
3 - 当我尝试替换时
RewriteRule ^pg/([a-zA-Z0-9]+)/?$ ?pg=$2 [R]
与
RewriteRule ^pg/([a-zA-Z0-9]+)/?$ detail?pg=$1 [R]
我收到来自服务器的 404 错误。不知道为什么。有什么想法吗?
谢谢。
编辑 1:
我尝试将 [L] 添加到 RewriteRule 的末尾(见下文)
RewriteRule ^pg/([a-zA-Z0-9]+)/?$ ?pg=$1 [R,L]
并将标准 Wordpress 重写规则移至下一行
RewriteRule . /index.php [L]
这样做之后,我不再收到服务器 404 错误。但是 CSS 文件会停止加载。
【问题讨论】:
标签: php wordpress .htaccess mod-rewrite