Apache 子域上的CodeIgniter和htaccess
我正在尝试建立一个基于CodeIgniter的网站。 对于开发,我希望拥有Apache 子域上的CodeIgniter和htaccess,apache,.htaccess,codeigniter,Apache,.htaccess,Codeigniter,我正在尝试建立一个基于CodeIgniter的网站。 对于开发,我希望拥有域dev.XXX.com 我改变了我的结构,所以我有一个no\u www和一个public\u www文件夹。 两者都位于dev.XXX.com的根目录下 所以我的想法是重写url的表单 dev.XXX.com/index.php/test 到 dev.XXX.com/public\u www/index.php/test 所以我只想在所有请求中添加public\u www 在我的htaccess文件中,我有: Rewri
域dev.XXX.com
我改变了我的结构,所以我有一个no\u www
和一个public\u www
文件夹。
两者都位于dev.XXX.com的根目录下
所以我的想法是重写url的表单
dev.XXX.com/index.php/test
到
dev.XXX.com/public\u www/index.php/test
所以我只想在所有请求中添加public\u www
在我的htaccess文件中,我有:
RewriteRule ^(.*)$ /public_www/$1 [L]
但是我总是收到500-内部服务器错误请尝试将以下内容添加到站点根目录(
public\u www
)中的.htaccess
文件中
RewriteEngine on
RewriteBase /
#if its on dev.xxx.com
RewriteCond %{HTTP_HOST} ^dev\.XXX\.com$ [NC]
#if its not already public_www/ rewrite to public_www/
RewriteRule ^(?!public_www/)(.*)$ /public_www/$1 [L,NC]
您的规则将导致无限重写和随后的500个错误。上面的一个应该可以防止这种情况
编辑
你能解释一下为什么我的版本会导致无限循环吗 关于无限循环,我可能是不正确的,但下面是将会发生的事情
^(.*)$
模式将匹配任何输入/public\u www/$1
^(.*)$
模式将匹配重写的输入/public\u www/$1
/public\u www/public\u www/$1
您的RewriteRule模式将匹配所有输入,并将重写为。然后将再次运行.htaccess规则尝试将以下内容添加到站点根目录(
public\u www
)中的.htaccess
文件中
RewriteEngine on
RewriteBase /
#if its on dev.xxx.com
RewriteCond %{HTTP_HOST} ^dev\.XXX\.com$ [NC]
#if its not already public_www/ rewrite to public_www/
RewriteRule ^(?!public_www/)(.*)$ /public_www/$1 [L,NC]
您的规则将导致无限重写和随后的500个错误。上面的一个应该可以防止这种情况
编辑
你能解释一下为什么我的版本会导致无限循环吗 关于无限循环,我可能是不正确的,但下面是将会发生的事情
^(.*)$
模式将匹配任何输入/public\u www/$1
^(.*)$
模式将匹配重写的输入/public\u www/$1
/public\u www/public\u www/$1
您的RewriteRule模式将匹配所有输入,并将重写为。然后将再次运行.htaccess规则那么你想保留index.php?那么你想保留index.php?你能解释一下为什么我的版本会导致无限循环吗?现在我的.htaccess文件位于我的文档根目录下/根目录下。当我用你的htaccess替换我的htaccess时,我有no_www和public_www文件夹。什么都没有发生正如你所说,当我在我的公共www文件夹中创建一个新的.htaccess时,我在访问公共www时仍然收到错误500folder@skelle.htaccess应该位于
文档根目录中。你能给我你测试过的完整网址吗?我不是说最后一个吗?所以我想他会在这条规则之后停下来,我会在几分钟后发布一个公共URL,解释上是+1——除了它会是一个无限迭代,在Max重定向上失败。我唯一的疑问是IIRC如果您查看这类替换的rewrite.log,通常在每目录处理(例如.htaccess
文件)中删除前导/相对目标会更安全--潜在的奇怪副作用更少。你能解释一下为什么我的版本会导致无限循环吗?现在我的.htaccess文件在我的文档根目录下/根目录下我有no\u www和public\u www文件夹当我用你的htaccess替换我的htaccess时,当我在我的public\u www文件夹中创建一个新的.htaccess时,什么都没有发生,正如你说的,我仍然没有访问公共\u www时出现错误500folder@skelle.htaccess应该位于文档根目录中。你能给我你测试过的完整网址吗?我不是说最后一个吗?所以我想他会在这条规则之后停下来,我会在几分钟后发布一个公共URL,解释上是+1——除了它会是一个无限迭代,在Max重定向上失败。我唯一的疑问是IIRC如果你看一下这种类型的替换的rewrite.log,在每目录处理(例如.htaccess
文件)中删除前导/相对目标通常更安全——潜在的奇怪副作用更少。