我有一个网站,结构如下:
/public_html
/main site content (html content mostly)
/.htaccess (1)
/secret (dir)
/wp (dir)
/a wordpress install
/.htaccess (2)
/secret/wp/是一个用于迁移到WordPress解决方案的开发站点。我在那里设计新网站。
当我尝试查看新网站时,root .htaccess导致403 Forbidden错误。我知道这一点,因为从服务器上删除它可以解决这个问题。
问题是,它正在为我做一些重要的文件扩展名重写,我需要或其他我的主要网站休息。
htaccess(1)
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
DirectoryIndex index.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(wp-admin)($|/) - [L] # You don't want to mess with WordPress
RewriteRule ^/secret/wp/ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule .* $0.html
# browser requests html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.html
RewriteRule ^/?(.*)\.html$ /$1 [L,R=301]
# check to see if the request is for a html file:
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^/?(.*)$ /$1.html [L]
</IfModule>
Redirect 301 /shop.html https://mydomain.myshopify.com/
添加行“RewriteRule ^/secret/wp/ - [L]”是寻找此问题的解决方案的结果,但它似乎没有做任何事情。
我的另一个.htaccess似乎根本没有触发。我会把它写得很清楚:
.htaccess(2)
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /secret/wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /secret/wp/index.php [L]
# Fix 403 errors on existing directories; WordPress overrides.
RewriteCond %{REQUEST_URI} ^/secret/wp/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我不知道该怎么办。我不能只是删除.htaccess文件,否则整个网站中断,但我似乎无法找出如何停止403错误。我很确定这是因为重写规则,但它似乎并没有像它应该的那样停止目录。
任何帮助将不胜感激。
2条答案
按热度按时间9rygscc11#
我想你可以在你的.htaccess里试试这个
tyky79it2#
找到答案了。我花了一个星期的时间在我能找到的所有论坛上挖掘和测试,但最终(在删除整个wp安装并重新安装到一个干净的目录后),我找到了一个最简单的答案,解决了这一切:
我不得不编辑我的.htaccess文件,以允许“index.php”作为一个有效的默认索引页。
我的顶级域名的.htaccess文件只有这一行:目录索引index.html
我只是不得不将其更改为DirectoryIndex index.html index.php
然后一切都正常了