0

我想使用 mod_rewrite。我在 /var/www/.htaccess 这个代码

<IfModule mod_rewrite.c>

    Options +FollowSymlinks
    RewriteEngine On
    #AllowOverride All

    #Allow from All  
    #RewriteBase /WorldClock
    #RewriteBase WorldClock/web/app.php
    # Explicitly disable rewriting for front controllers
    RewriteRule ^/web/app_dev.php - [L]
    RewriteRule ^/web/app.php - [L]

    # Fix the bundles folder
    #RewriteRule ^(.*)$ WorldClock/web/app.php/test [QSA,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    # Change below before deploying to production
    RewriteRule ^(.*)$ WorldClock/web/app.php [QSA,L]
    #RewriteRule ^(.*)$ WorldClock/web/app_dev.php [QSA,L]

</IfModule>

如果行 是注释,则表示它发生了内部服务器错误 但是,如果我点击链接并获得这样的网址,那么我会得到/var/www/WorldClock/../var/wwwlocalhosthttp://localhost/info/12

 Not Found The requested URL /info.xml/12 was not found on this server.

没有 .htaccess 一切正常。Mod_rewrite 在 phpinfo() 中开启;我使用 symfony2 和 Ubuntu

4

1 回答 1

0

为了让我们能够提供帮助,至少我们需要您的 Web 服务器的配置。我认为这只是 Web 服务器配置不正确的问题。如果我的回答不正确,请用有意义的错误消息更新您的问题,即检查您的 error.log 以及更详细的说明哪些路由有效,哪些无效,因为我不完全确定您是否可以访问 localhost并查看默认的“It work's”页面或您项目的首页以及您是否可以访问您的资产?

worldclock.conf只需在以下位置创建一个新文件/etc/apache2/sites-available/

<VirtualHost *:80>
    ServerName localhost

    DocumentRoot /var/www/WorldClock/web
    <Directory /var/www/WorldClock/web>
        # enable the .htaccess rewrites
        AllowOverride All
        Order allow,deny
        Allow from All
    </Directory>
</VirtualHost>

现在您只需要启用新的虚拟主机并重新启动您的 Web 服务器:

sudo a2ensite worldclock

# When both hosts use localhost as ServerName there might be some problems
# so we'll disable the default host, which we won't need anyway(?)
sudo adissite default

sudo service apache2 restart

如果这只是您的开发环境,您可以使用 PHP 的内部 Web 服务器(假设您安装了 5.4),这将简化一些所需的工作,因为您只需要运行:php app/console server:run让它运行。然后您可以通过以下方式访问您的应用程序:http://localhost:8000默认情况下。

要找出安装了哪个 PHP 版本,只需运行:php -v在您的终端中。

于 2013-05-13T14:57:20.917 回答