【发布时间】:2018-01-20 00:43:34
【问题描述】:
我安装了一个较旧的 CakePHP 实例来运行我的网站。
WordPress 安装在 example.com/blog 上,并且在我尝试修复另一个问题之前,WordPress 安装在 example.com 上,主页 example.com 将重定向到带有双斜杠的 example.com//。问题是它现在重定向到example.com/webroot/blog。
这是我的 htaccess 文件和目录结构:
/var/www/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ html/webroot/ [L]
RewriteRule (.*) html/webroot/$1 [L]
</IfModule>
/var/www/html/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
/var/www/html/webroot/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
# RewriteRule ^(.*)$ $1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
/var/www/html/webroot/blog/.htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
/var/www/html/webroot/是您的example.com域的 Web 根文件夹吗?如果是这样,您不需要在/var/www/和/var/www/html/中使用htaccess。然后,在/var/www/html/webroot/.htaccess中,由于对两行有罪的行进行了注释,因此请尝试清除浏览器的缓存并重试。我还要在/var/www/html/webroot/.htaccess中添加一个条件,以保持/blog/请求保持不变 -
感谢@JustinIurman 的回复。
/var/www/html是我使用 cakephp 的主要网站根目录。/var/www/html/webroot/blog是博客。我该怎么办? -
这很奇怪。您是否完全确定您没有看到缓存的重定向(开发工具+在请求时禁用缓存,使用 curl)?您是否尝试过逐个文件禁用 .htaccess 文件以查看哪个负责该重定向?
-
@JustinIurman 我如何让这些请求保持原样?
-
如果 /var/www/html 是你的文档根目录并且有你的 cakephp 应用程序,为什么你有 webroot 文件夹/为什么博客不直接在 /var/www/html/blog 中?另外,预期的结果是什么? example.com 加载 /var/www/html/index.php,/blog/ 下面的任何内容都转到 /var/www/html/webroot/blog/index.php(又名默认 WP)?
标签: php wordpress apache .htaccess cakephp