在子目录

时间:2016-06-07 22:46:50

标签: wordpress apache .htaccess mod-rewrite http-status-code-403

我的网站结构如下:

/public_html
    /main site content (html content mostly)
    /.htaccess (1)
    /secret (dir)
        /wp (dir)
            /a wordpress install
            /.htaccess (2)

/ secret / wp /是一个用于转移到wordpress解决方案的开发站点。这是我在新网站上工作的地方。

当我尝试查看新网站时,根.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 个答案:

答案 0 :(得分:0)

我想你可以试试这个.htaccess

winCheck = function () {
if ((a1 == a2 && a1 == a3 && (a1 == "x")) ||
(b1 == b2 && b1 == b3 && (b1 == "x")) ||
(c1 == c2 && c1 == c3 && (c1 == "x")) ||
(a1 == b1 && a1 == c1 && (a1 == "x")) ||
(a2 == b2 && a2 == c2 && (a2 == "x")) ||
(a3 == b3 && a3 == c3 && (a3 == "x")) ||
(a1 == b2 && a1 == c3 && (a1 == "x")) ||
(a3 == b2 && a3 == c1 && (a3 == "x"))
) {
    xWin = true;
    winAlert();
    {
    playerWin = playerWin + 1;
    xWin = true;
    document.getElementById("playerWin").innerHTML = playerWin;
            }

答案 1 :(得分:0)

找到答案。我花了一个星期的时间挖掘和测试我能找到的每个可能的论坛,但最终(在删除整个wp安装并重新安装到一个干净的目录之后),我找到了最简单的解决方法来修复它:

  

我必须编辑我的.htaccess文件以允许“index.php”作为有效文件   默认索引页。

     

我的域名顶层的.htaccess文件只有这一行:   DirectoryIndex index.html

     

我只需将其更改为DirectoryIndex index.html index.php

     

然后一切正常。