我在同一台服务器上有一个域名和一个wordpress-blog。现在我有一个问题(惊喜)。 wordpress位于/ httpdocs / blog /,域指向/ httpdocs /,我正在尝试将其重定向到/ httpdocs / domain /。但是,很明显,我在Wordpress中有永久链接。
这是我目前的.htaccess:
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
RewriteBase /
RewriteCond %{HTTP_HOST} domain.com
RewriteCond %{REQUEST_URI} !^/domain
RewriteCond %{REQUEST_URI} !^/cgi-bin
RewriteRule ^(.*)$ domain/$1 [L]
但正如您已经假设的那样,这不起作用。 Wordpress的固定链接也会影响到/ domain /,所以我的图片和其他网址都出错了。
有什么建议吗?是否可以像这样使用RewriteBase?
答案 0 :(得分:9)
不,您只能有一个基本网址。只需重写你的规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/. /blog/index.php [L]
RewriteCond %{HTTP_HOST} =example.com
RewriteCond %{REQUEST_URI} !^/domain
RewriteCond %{REQUEST_URI} !^/cgi-bin
RewriteRule ^(.*)$ domain/$1 [L]
答案 1 :(得分:0)
当我试图找到类似问题的解决方案时,我来到了这篇文章。似乎可以有多个基本URL,但是重写后逻辑不会停止。如果URL都击中了两个重写基础,则将运行所有重写。因此,最严格的重写基础应放在文件的末尾。对于此示例,应为:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} domain.com
RewriteCond %{REQUEST_URI} !^/domain
RewriteCond %{REQUEST_URI} !^/cgi-bin
RewriteRule ^(.*)$ domain/$1 [L]
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
注意到这两个重写都在运行,因此如果重写矛盾,则需要退回到已接受的答案。