Apache htaccess和重写
我只是在我的网站上做了一个子域名,主要是因为我想要一个特定的地址 假设我的网站是:Apache htaccess和重写,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我只是在我的网站上做了一个子域名,主要是因为我想要一个特定的地址 假设我的网站是:http://website.com 我的子域是http://sub.website.com主文件夹位于/home/username/public\u html/sub/ 当我输入子域地址时,地址突然变为http//website.com/sub/ 如何保留子域地址 为丹尼斯编辑: 我有一条规则指导所有http://www.website.com至http://website.com 我用 RewriteEngin
http://website.com
我的子域是http://sub.website.com
主文件夹位于/home/username/public\u html/sub/
当我输入子域地址时,地址突然变为http//website.com/sub/
如何保留子域地址
为丹尼斯编辑:
我有一条规则指导所有http://www.website.com
至http://website.com
我用
RewriteEngine on
Redirect to non-www
RewriteCond %{HTTP_HOST} !^(website\.com)?$
RewriteRule (.*) http://website.com/$1 [R=301,L]
即使我将其注释掉,地址仍会更改为
http://website.com/sub/
致以最良好的祝愿,
Alexander我可以想象这样的东西会起作用(未经测试): 注意:根据选项,需要添加以下SymLinks 这是一个可以覆盖的选项,以使重写工作正常进行 第一次重写将确保不重写“webiste.com”主机(但是 像sub.website.com这样的域名将被删除)。第二个匹配任何东西 直到主机名的第一个点。这两项都必须成功,如果成功的话,主人也必须成功 可以在%1中访问部件 第一个重写规则将参数重写为php脚本中的目录路径 (在浏览器的URL上看到更改)。下一条重写规则使用[P] 将任何形式为/xx/yy/的请求代理到%1.php(我们记忆中的主机名)的标志 将参数传递给php脚本 正如我所说,这是没有测试,但希望它会让你“在正确的方向”
编辑:从第一个重写规则中删除了[R]。另一个解决方案是为您的子域指定一个虚拟主机(应该已经是这样了,否则您会遇到很多问题),并使该虚拟主机忽略主域的.htaccess指令。您应该真正尝试保持子域配置独立于主域配置 假设子域VH中的documentRoot是
/home/username/public_html/sub/
,当Apache提供index.php或index.html文件或此目录中的任何其他文件时,它会在/home/username/public_html/sub/
,/home/username/public_html/
中对所有.htaccess执行递归搜索,/home/username/
,/home/
和/
。因此,在主域中定义的规则(我认为它在/home/username/public\u html/
中)被应用
您可以通过添加以下内容告知此子域VirtualHost忽略VH DocumentRoot之前的所有.htaccess文件:
<Directory />
AllowOverride None
</Directory>
<Directory /home/username/public_html/sub/>
AllowOverride All
</Directory>
不允许超限
允许超越所有
您甚至可以删除
AllowOverride All
,删除All.htaccess,并将子域的.htaccess中的内容(如果您有子域)直接放在
部分,效果相同,而无需Apache在文件系统上搜索配置部分(速度更快).您无法轻松地将sub.php?blahblah
重写为一个漂亮的url,因为如果没有深入的前提条件检查,重写规则引擎将无法匹配查询字符串。在php级别这样做会更简单。但是,如果我创建一个子域并转到该地址,那么该地址会突然更改为,是否可以保留该地址?也许你有一个重定向脚本。如果没有,这将是一个问题,为您的主机…嗯,也许,我会重定向从www.到非www.检查编辑谢谢我会做一个研究,使它的工作,然后我会张贴回这里,当它工作!
<Directory />
AllowOverride None
</Directory>
<Directory /home/username/public_html/sub/>
AllowOverride All
</Directory>