我正在尝试创建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 =&gt; www.mywebsite.com?pg=2
几个问题:
1 - 如何配置.htaccess仅在找到以下密钥时处理该网址
/ pg和/或/ row和/或/ filter和/或/ filtercity
对于所有其他网址,它应该执行标准的Wordpress RewriteRule。的index.php
2 - 网址也可以包含所有密钥或仅包含其中的一些密钥。例如:
/ PG / 2 /行/ 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文件会停止加载。
答案 0 :(得分:0)
1 - 如何配置.htaccess只在它处理url时 找到以下键
/ pg和/或/ row和/或/ filter和/或/ filtercity
阅读此Rewrite URL with .htaccess for multiple parameters
上述答案可帮助您在使用标准网址格式时解决问题。
2 - 网址也可以包含所有密钥或仅包含其中的一些密钥。对于 例如:
/ PG / 2 /行/ 20
/行/ 20 /过滤器/所有
您正在尝试使用URL语义执行某些操作。当您尝试访问资源时,路径应该每次都相同。如果您在起始页面上,则可以传递pg / 0 /。但谁可以阻止你走出URL语义? :)在这种情况下,你必须在.htaccess中将所有组合作为规则。按照上面的解决方案,所有网址组合都可以使用。
我的建议: