我的Web目录中有以下的.htaccess文件,用于我的Symfony2安装:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*) app.PHP [QSA,L] </IfModule>
但是,当我尝试一些基本的东西,如:
(whatever)/web/app.PHP/place
它不会从URL中删除app.PHP。 我是Apache的新手,我不确定这里发生了什么事情,谁能说出一些光? 提前致谢!
编辑:由于我正在工作的networking应用程序的结构,我不能移动web.PHP或app_dev.PHP网页文件夹之外,也无法修改Apache的服务器configuration,因此,我正在寻找一种替代解决scheme这个问题。
configurationApache不重写FILE + SLASH的URL
使用Flask + Nginx根据dynamicURL提供静态文件?
我的Nginx的重写规则应该是什么Rails与乘客的页面caching在一个子目录?
转换htaccess到Nginx
选项FollowSymLinks或SymLinksIfOwnerMatch已closures
在Nginx上重写plex媒体服务器url?
该重写规则并不意味着从URL中删除app.PHP 。 如果请求的URL不对应一个真实的文件,它的目的是为每个请求使用app.PHP 。 由于app.PHP是一个真正的文件,它将被用来提供请求。
如果你想摆脱web/app.PHP部分,首先创建一个指向web文件夹的虚拟主机:
<VirtualHost *:80> serverName whatever DocumentRoot /path/to/project/web </VirtualHost>
这将删除web部分。
然后,要删除app.PHP部分,将其添加到web/.htaccess文件的开头:
RedirectMatch permanent ^/app.PHP/(.*) /$1
您必须在Apache中启用重写模块,如“Ifmodulee mod_rewrite.c”所述。
要做到这一点:
运行命令行命令“a2enmod rewrite”。
将所有“AllowOverride None”行更改为“AllowOverride All”。
见http://www.lavluda.com/2007/07/15/how-to-enable-mod_rewrite-in-apache22-debian/ 。
我今天遇到了这个问题,修复方法是在url重写规则的末尾附加一个/ $ 1。
我的.htaccess看起来像这样:
<Ifmodulee mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.PHP/$1 [QSA,L] </Ifmodulee>
而虚拟主机被定义为:
<VirtualHost *:80> DocumentRoot /var/www/html/symfony_site/web DirectoryIndex app.PHP <Directory /var/www/html/symfony_site/web > AllowOverride All Allow from All </Directory> </VirtualHost>
我刚刚得到同样的问题,我解决了这个问题:
<Ifmodulee mod_rewrite.c> RewriteEngine On RewriteBase /web/ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.PHP [QSA,L] </Ifmodulee>
当你写RewriteCond %{REQUEST_FILENAME} !-f你说:“不要改变真实的文件…他们应该仍然是可及的。” 如果你删除它,它应该工作。
它允许的原因是一些框架让你使用http://site.tld/script.PHP/abc=123&def=456风格的链接。
如果你想允许除了 app.PHP 之外的文件名,你可以添加另一个RewriteCond 。
我们也一直在努力。 有两个解决方案:
设置虚拟主机的文档根目录直接指向/web/子文件夹(按照Symfony2的指导)
移动/web/子文件夹之外的app.PHP和app_dev.PHP ,然后更新.htaccess并相应地在两个文件中包含路径(例如,在您手动将文件移动到上面的一个文件夹后,移除web/更正所有路径)
(注意:不能提供S2的香草安装的例子,因为symfony.com目前似乎正在下降。)
我设法删除我的共享服务器上的web / app.PHP部分。
首先,我把app.PHP移出web目录一级以上,因此我的app.PHP在根目录下。 然后我在根目录下放置了一个.htaccess
RewriteEngine on RewriteBase / RewriteRule ^css/(.*) web/css/$1 RewriteRule ^images/(.*) web/images/$1 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.PHP [QSA,L]
我在css和图像上使用了RewriteCond,因为它们仍然位于/ web /目录中,所以对css和图像的所有请求将分别路由到web / css和web / images目录。
它为我工作得很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。