子目录index.php不工作

时间:2018-01-01 作者:Bhuvnesh Gupta

我在根目录中设置了wordpress,在同一级别,我还有一些其他目录,例如名为“sq”。

在下面sq 有如下子目录first, second, ... 每个子目录下都有索引。php文件。

问题是当我访问http://example.com/sq/first 它给了我404页的根wordpress。

我尝试了索引。html而不是索引。php,这是可行的。So索引。php不工作,我需要php而不是html。

我已经尝试了所有可能的谷歌更新解决方案。htaccess,但对我来说什么都不起作用。e、 我试过这个

# Include in the next line all folders to exclude
RewriteCond %{REQUEST_URI}  !(sq|folder2|folder3) [NC]
RewriteCond %{REQUEST_URI} !^/(sq|mydir/.*)$
RewriteBase /sq/
我的完成。htaccess为

# BEGIN WordPress
<IfModule mod_rewrite.c>
ErrorDocument 401 default
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# Include in the next line all folders to exclude
RewriteCond %{REQUEST_URI}  !(sq|folder2|folder3) [NC]
RewriteCond %{REQUEST_URI} !^/(sq|mydir/.*)$
RewriteBase /sq/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


#----- START DAP -----
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} (.*)/wp-content/uploads/(.*) 
RewriteCond %{REQUEST_FILENAME} !(.*)(\\.php|\\.css|\\.js|\\.jpg|\\.gif|\\.png|\\.txt|\\.ico|\\.jpeg)$ 
RewriteRule (.*) /dap/client/website/dapclient.php?dapref=%{REQUEST_URI}&plug=wp&%{QUERY_STRING}  [L] 
#----- END DAP -----

</IfModule>

# END WordPress
请帮助大家。

谢谢

1 个回复
SO网友:MrWhite

您需要做的就是确保DirectoryIndex 已设置。例如,在.htaccess 文件:

DirectoryIndex index.php
这指示mod\\u dir尝试服务index.php 请求目录时,例如。/sq/first/.

如果您正在请求尚未包含尾部斜杠的URL/目录,如您的示例所示:/sq/first, 那么你需要确保DirectorySlash On (也是mod\\u dir的一部分)也已设置(尽管这是默认设置)。例如:

DirectoryIndex index.php
DirectorySlash On
但是,您确实应该请求/sq/first/ (带尾随斜杠),否则mod\\u dir会发出301重定向以附加尾随斜杠-这是到服务器的额外往返。

<小时>

RewriteBase /
:
RewriteBase /sq/
放在一边:理想情况下,您不应该包含更多的内容RewriteBase 您的.htaccess 文件既然WordPress安装在文档根目录中,那么RewriteBase 可能应该设置为文档根,即。RewriteBase /. 如果您有多个RewriteBase 指令,则最后一个命令获胜并控制整个文件。所以,在这个例子中,RewriteBase 设置为/sq/, 不/. 然而,在您的.htaccess 文件RewriteBase 实际上并没有被使用。(你也可以把它放在规则块的中间,这没有多大意义——事实上,我很惊讶这不会导致错误?)

<小时>UPDATE: 综上所述:

DirectoryIndex index.php
DirectorySlash On

ErrorDocument 401 default

# 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]    

#----- START DAP -----
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} (.*)/wp-content/uploads/(.*) 
RewriteCond %{REQUEST_FILENAME} !(.*)(\\.php|\\.css|\\.js|\\.jpg|\\.gif|\\.png|\\.txt|\\.ico|\\.jpeg)$ 
RewriteRule (.*) /dap/client/website/dapclient.php?dapref=%{REQUEST_URI}&plug=wp&%{QUERY_STRING}  [L] 
#----- END DAP -----

</IfModule>
# END WordPress
您应该避免在# BEGIN WordPress# END WordPress 作为WP本身的注释标记可能会在将来的更新中覆盖此内容。

我删除了您必须“排除”某些目录的部分。这不会造成任何伤害,但是,考虑到现有的WordPress mod\\u rewrite指令,这也是不必要的。WordPress(上面的mod\\u rewrite指令)已经排除了通过WP路由的物理目录。

结束