Php .htaccess、重写引擎和文件夹结构
我环顾四周,没有找到确切问题的答案 我不确定这是否是我的服务器上最好的文件夹结构,但它本质上就是这样的Php .htaccess、重写引擎和文件夹结构,php,html,.htaccess,rewrite,directory-structure,Php,Html,.htaccess,Rewrite,Directory Structure,我环顾四周,没有找到确切问题的答案 我不确定这是否是我的服务器上最好的文件夹结构,但它本质上就是这样的 / .htaccess []CSS []图像 index.php []其他网站 []站点1 []站点2 index.html []sub.site2.com index.php 也许很明显: mySite.com转到根目录Site1.com转到Site1.com子文件夹Site2.com转到Site2.com子文件夹。sub.site2.com是一个子域,它位于站点2中的子
- /
- .htaccess
- []CSS
- []图像
- index.php
- []其他网站
- []站点1
- []站点2
- index.html
- []sub.site2.com
- index.php
DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
上面的代码不允许我访问“site2”,但实际上将.php从根站点上剥离。这是一种处理我的文件夹结构的错误方法吗?我是否可以使根目录中的.htaccess影响所有文件夹,或者在每个子文件夹中需要单独的.htaccess文件
此外,网站内的链接如下所示
<a href="about">About</a>
而不是
<a href="about.php">About</a>
htaccess文件工作正常,对吗
问题是,我无法在根文件夹中获取.htaccess来从所有站点和子站点中删除.html和.php
这是因为根文件夹中的htaccess文件位于site1.com、site2.com等站点的文档根目录之外。他们无法遍历“site1”文件夹以外的任何位置
此外,您的规则将永远不会工作,因为您的条件仅应用于第一个规则,第二个规则可以自由重写所有内容并导致循环。您需要复制您的条件:
DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
由于site1.com/site2.com/etc站点完全无法访问根htaccess文件,因此您需要在每个站点中复制这些规则。您似乎有某种嵌套的webroot结构,通常不是这样做的。为每个(子)域指定自己的webroot:
/sites/site1.mydomain.com
、/sites/site2.mydomain.com
和/sites/sub.site2.mydomain.com
。然后在每个webroot中添加一个.htaccess
,以处理该域所需的任何重写。现在看起来很明显。谢谢