gpt4 book ai didi

mod-rewrite - 如何在新的 Symfony2 应用程序的生产 URL 中摆脱对 "/app.php/"的需求?

转载 作者:行者123 更新时间:2023-12-04 16:32:08 24 4
gpt4 key购买 nike

我已经完成了 Symfony2 的第一次安装,

    php app/console --version
Symfony version 2.0.11 - app/dev/debug

我通过配置我的 apache2 服务器 vhost 将它安装在现有的 DocumentRoot 下
    <VirtualHost 127.0.0.1:80>
...
DocumentRoot /srv/www/localhost_www
...
<Directory "/srv/www/localhost_www" >
AllowOverride none
Options -ExecCGI +FollowSymLinks +Includes +Indexes +MultiViews
Order Allow,Deny
Allow from All
</Directory>
...
Alias /TESTAPP "/srv/www/TESTAPP/web/"
<Directory "/srv/www/TESTAPP/web/">
Options All
AllowOverride All
Allow from All
</Directory>

Alias /TESTAPP.symfony "/srv/www/TESTAPP/"
<Directory "/srv/www/TESTAPP/">
Options All
AllowOverride All
Allow from All
</Directory>
...

安装 OK 并成功按照“The Book”构建演示“Hello”应用程序后,如果我在浏览器中导航到任何/全部,
  dev:
http://localhost/TESTAPP.symfony/web/app_dev.php/hello/ME
http://localhost/TESTAPP/app_dev.php/hello/ME
prod:
http://localhost/TESTAPP.symfony/web/app.php/hello/ME
http://localhost/TESTAPP/app.php/hello/ME

我看到了预期,

“你好我!”

我只想重写生产 URL,隐藏“app.php”,以便以下 URL 集在我的 Symfony2 应用程序的浏览器的导航栏中工作:
  dev:
http://localhost/TESTAPP.symfony/web/app_dev.php/hello/ME
http://localhost/TESTAPP/app_dev.php/hello/ME
prod:
!! http://localhost/TESTAPP.symfony/web/hello/ME
!! http://localhost/TESTAPP/hello/ME

iiuc,默认web/.htaccess
        cat web/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

需要改变。

我已经在文档和网络上进行了挖掘,尝试了修改 RewriteRule、添加“RedirectMatch 永久”等的不同建议,但我没有设法得到一个简单的

http://localhost/TESTAPP/hello/ME

永远工作。我似乎总是需要添加“/app.php/”。

为了使其正常工作,我需要进行哪些具体更改?

谢谢。

@chasen

is mod_rewrite enabled for apache?



是的

if you have your .htaccess file in your web directory



我愿意

and you host file pointing to the web folder the



如上所述,
    Alias /TESTAPP  "/srv/www/TESTAPP/web/"  
<Directory "/srv/www/TESTAPP/web/">

app.php should not be needed.



那是我的问题。没有它,它对我不起作用。

具体来说,
    https://localhost/TESTAPP/app.php/hello/ME

返回:

“你好我!”


    https://localhost/TESTAPP/hello/ME

返回
Object not found!

The requested URL was not found on this server.
If you entered the URL manually please check your
spelling and try again.

If you think this is a server error, please contact
the webmaster.
Error 404

最佳答案

我知道这是一个愚蠢的问题,但是否为 apache 启用了 mod_rewrite?

如果您的 web 目录中有 .htaccess 文件,并且您的托管文件指向 web 文件夹,则不需要 app.php。

如果您正在运行 ubuntu 或类似的发行版,您可以执行以下操作:

sudo a2enmod rewrite
sudo service apache2 reload
sudo service apache2 restart

那应该启用mod,并重新加载apache。

编辑:

您收到的回复是在 symfony 页面中吗?如果您的产品缓存可能需要清除,请从应用程序的根目录使用 symfony 控制台清除缓存:
php app/console cache:clear --env="prod"

编辑:

如果这些都不起作用,您可以尝试将 RewriteBase 添加到 htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /TESTAPP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

关于mod-rewrite - 如何在新的 Symfony2 应用程序的生产 URL 中摆脱对 "/app.php/"的需求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9474062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com