【发布时间】:2015-04-09 14:49:25
【问题描述】:
我正在将网站迁移到 Wordpress,并使用 Multiblog 功能。无论如何,我都不是 htaccess 专家,但我确实设法定期使用它。所以我在这里寻求一些专家建议。
网站 www.blather.ie 将使用与旧网站相同的子博客路径。我需要保留旧文件夹 - 例如 www.blather.ie/zeitgeist 和一些旧内容,同时将 Wordpress 博客发布到同一路径。当我尝试这样做时,我意识到会发生 403 错误。于是我找到了workaround here和here。
按照这些页面中描述的向我的 htaccess 添加行到我的现有文件不起作用。当我清除 htaccess 文件并从头开始时,我不再收到 403 错误 - 内容出现了,但没有任何主题/样式表。我检查了源代码,发现它试图从 www.blather.ie/zeitgeist/wp-content... 中提取信息,但它不存在 - 它需要从 www.blather.ie/wp-内容/...
此外,此“修复”还开始在管理后端创建循环。不知道为什么。
所以,这是我原来的 htaccess 文件:
# BEGIN WordPress
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress
这里是相同的 htaccess 与推荐的目录冲突问题修复,但仍然会导致 403 错误。
# BEGIN WordPress
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Fix 403 errors on existing directories; WordPress overrides.
RewriteCond %{REQUEST_URI} ^/(zeitgeist)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress
这是取自第一个推荐网站的“干净”htaccess - 它可以治愈 403,但会破坏路径,指向错误的样式表位置,并在后端导致重定向循环和 403:
# 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]
# Fix 403 errors on existing directories; WordPress overrides.
RewriteCond %{REQUEST_URI} ^/(zeitgeist)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
所以 - 我的问题 - 我的路径哪里出了问题,并导致这些该死的反馈循环?
提前致谢!
【问题讨论】:
标签: wordpress apache .htaccess mod-rewrite