0

我创建了第一个 Symfony 应用程序,但 url 太大了

http://ip地址/repair/web/app_dev.php/home

http://ip地址/repair/web/app.php/home

我想把它设为 http://ip address/repair/home

这是apache2的httpd.conf

NameVirtualHost 某物 ip 地址

服务器名称“修复”

DocumentRoot "/var/www/repair/web"

<Directory "/var/www/repair/web">
   DirectoryIndex app.php
    AllowOverride None
    Order allow,deny
    Allow from All
 RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
    RedirectMatch permanent ^/app\.php/(.*) /$1
</Directory>

我在 symfony 的 web 文件夹中的 .htaccess 包含

Options +FollowSymlinks

RewriteEngine On  

# Explicitly disable rewriting for front controllers
RewriteRule ^app.php - [L]
RewriteRule ^app.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]

我也重装了 apache2 的 mod-Rewrite

我收到错误

在此服务器上找不到请求的 URL /repair/home。

Apache/2.2.20 (Ubuntu) 服务器在 IP 地址端口 80

4

3 回答 3

0

如果您想通过 ip 访问站点,您需要将代码复制到“localhost”目录(/var/www,例如)

于 2013-05-28T10:33:48.903 回答
0

Apache 配置中的AllowOverride None行导致 .htaccess 文件被忽略。

如果将其替换为AllowOverride AllApache 将遵循 .htaccess 文件中的指令。

您可以在此处找到有关 AllowOverride 的更多信息

于 2013-05-28T19:06:24.027 回答
0

仔细检查您是否确实为 Apache 加载了 mod-rewrite。在使用 Apache 2 安装 Debian 6 时,该模块可用,但未加载。为了加载它,您可以将 mods-enabled 目录中的符号链接添加到 mods-available 目录中的模块,如下所示:

root@server:/etc/apache2/mods-enabled# ln -s ../mods-available/rewrite.load ./rewrite.load

然后您需要重新启动 Apache2 以使其重新加载其配置。在 Debian 上sudo service apache2 restart

于 2014-11-04T20:16:03.400 回答