我有一个常规站点,在其中添加了Wordpress,该站点安装在/ wp中并重写为root。我也有一个需要重写规则的perl程序。我知道我不应该有两个RewriteBase实例,但是看不到如何使两个部分一起工作。使用当前设置,当WP部分处于活动状态时,虚拟目录/ amazon会为所有呼叫生成404。
删除第二个重写库无效。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>
# END WordPress
RewriteEngine on
RewriteBase /
RewriteRule ^(amazon)$ $1/ [R]
RewriteRule ^(amazon)/(.*)(\.[a-z]+)$ cgi-bin/cbooks/ca.pl?virtual=$2&virtual.dir=$1 [L]
RewriteRule ^(amazon)/(.*)$ cgi-bin/cbooks/ca.pl?virtual=$2&virtual.dir=$1 [L]
您应该将您的亚马逊规则放在您的wordpress路由规则之前,并在规则目标之前添加一个斜杠,使它们成为绝对的URL路径:
RewriteEngine on
RewriteRule ^amazon$ /$1/ [R,L]
RewriteRule ^amazon/(.*)(\.[a-z]+)$ /cgi-bin/cbooks/ca.pl?virtual=$2&virtual.dir=$1 [L]
RewriteRule ^amazon/(.*)$ /cgi-bin/cbooks/ca.pl?virtual=$2&virtual.dir=$1 [L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>
# END WordPress
WordPress路由规则正在路由您的亚马逊规则,因为它们排在第一位。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句