我环顾四周,但我找不到确切问题的答案。
我不确定这是否是我服务器上最好的文件夹结构,但这本质上就是它
也许很明显:
mySite.com 转到根目录。 Site1.com 转到site1.com子文件夹。 Site2.com 转到site2.com子文件夹。 sub.site2.com 是一个子域,可转到站点2中的子文件夹。
我的问题是我无法获取根文件夹中的.htaccess来从所有网站和子网站中剥离.html和.php。这就是我到目前为止所做的:
DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
上面的代码不允许我访问"站点2",但是有效地剥离了根网站上的.php。这是一种接近我的文件夹结构的坏方法吗?我可以让root中的.htaccess影响所有文件夹,或者我是否需要在每个子文件夹中使用单独的.htaccess文件。
此外,网站中的链接看起来像这样
<a href="about">About</a>
而不是
<a href="about.php">About</a>
htaccess文件正常工作是正确的吗?
答案 0 :(得分:0)
问题是我无法获取根文件夹中的.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文件,因此您需要在每个网站中复制这些规则。