我在同一个服务上运行一个网站和一个CakePHP服务器 . CakePHP位于子目录中 . 我希望URL http://www.example.com指向root中的index.html,然后http://www.example.com/app重定向到CakePHP webroot .
这些是我当前的.htaccess文件
在var / www / html中:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
在var / www / html / app中:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ /webroot/ [L]
RewriteRule (.*) /webroot/$1 [L]
</IfModule>
在var / www / html / app / webroot中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Edit
问题是如何设置我的htaccess,以便我可以使用URL http://www.example.com/app访问我的CakePHP webroot,但如果我使用URL http://www.example.com,则可以使用索引var / www / html . 使用我当前的htaccess,它将两个URL重定向到CakePHP webroot .
谢谢
2 回答
答案:https://stackoverflow.com/a/33018144/1127933
你的文件夹结构:
Inside var/www/html add .htaccess file
你有root访问apache配置吗?
我猜你的蛋糕应用程序不是你想在这个域上运行的唯一的东西,所以你想在
/app
上设置它作为别名?我建议首先在apache配置中将
/app
设置为别名 .我更熟悉在Ubuntu 14.04上这样做(我的例子特定于ubuntu),但其他Linux发行版的概念类似
启用别名mod:
使用nano或其他喜欢的文本编辑器,您需要将文件添加到apache配置:
对于文件内容:
启用配置文件,以便apache知道加载它:
重新启动apache以加载新配置:
然后在
/app/webroot
中重写.htaccess
文件中的基数完成 .
http://www.example.com/app
现在将指向并充当您的应用程序基目录其他.htacess文件
/.htaccess
和/app/.htaccess
可以删除,因为它们永远不会被命中 . 没有必要将虚拟主机直接指向webroot,但这是更好的做法,因为它会阻止用户访问或查看app目录中的其他文件夹Centos / RedHat setting up apache alias
将其添加到
/etc/httpd/conf/httpd.conf
文件的底部并重新启动Apache应该可以解决问题 .service httpd restart
The Short Answer to your question
如果您没有apache配置的root访问权限,或者只是想跳过别名添加步骤,您只需将
RewriteBase /app
行添加到您的webroots .htaccess删除或编辑
/var/www/html
中的.htaccess
,以便myexample.com/
不会重定向到蛋糕应用