2

我想从 URL 中隐藏“index.php”,但它根本不起作用。我通过谷歌,堆栈尝试了很多东西,但它根本没有帮助我。我的 .htaccess 文件中指定了以下规则。此外,当我使用“https://www.domain.com/index.php/login”访问 URL 时,它可以正常工作,但是当我使用“https://www.domain.com/login”访问该站点时,它会显示404 页面(找不到页面)。我不确定我是否遗漏了什么。[注意:我使用的是 symfony 1.4,我也尝试使用http://www.symfony-project.org/plugins/lapeSSLFilterPlugin之类的过滤器来处理 ssl,但它不起作用。我还检查了 ssl 的错误日志,但在日志中没有收到任何相关错误。]

Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
   RewriteEngine On

   # uncomment the following line, if you are having trouble
   # getting no_script_name to work
   RewriteBase /

   # we skip all files with .something
   #RewriteCond %{REQUEST_URI} \..+$
   #RewriteCond %{REQUEST_URI} !\.html$
   #RewriteRule .* - [L]

   # we check if the .html version is here (caching)
   RewriteRule ^$ index.html [QSA]
   RewriteRule ^([^.]+)$ $1.html [QSA]
   RewriteCond %{REQUEST_FILENAME} !-f

   # no, so we redirect to our front web controller
   RewriteCond %{SERVER_PORT} !^443$
   RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}        [R=301,L]
   RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

ssl.conf 文件包含以下内容:

LoadModule ssl_module modules/mod_ssl.so
Listen 443

<VirtualHost _default_:443>
  DocumentRoot /var/www/html/domain/web
  ServerName www.domain.com
  RewriteEngine On
  DirectoryIndex index.php
  Alias /sf /var/www/html/domain/lib/vendor/symfony/data/web/sf
  <Directory "/var/www/html/domain/lib/vendor/symfony/data/web/sf">
      AllowOverride All
      Allow from All
  </Directory>
  <Directory "/var/www/html/domain/web">
      AllowOverride All
      Allow from All
  </Directory>

  ErrorLog logs/ssl_error_log
  TransferLog logs/ssl_access_log
  LogLevel warn

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/domain.com.crt
  SSLCertificateKeyFile /etc/ssl/certs/domain.key
  SSLCertificateChainFile /etc/ssl/certs/gd_bundle.crt
  SSLCACertificateFile /etc/ssl/certs/gd_bundle.crt
</VirtualHost>

httpd.conf 文件包含以下虚拟主机设置:

<VirtualHost *:80>
   ServerName www.domain.com
   DocumentRoot "/var/www/html/domain/web"
   DirectoryIndex index.php
   RewriteEngine On
   <Directory "/var/www/html/domain/web">
     AllowOverride All
     Allow from All
   </Directory>
   Alias /sf /var/www/html/domain/lib/vendor/symfony/data/web/sf
   <Directory "/var/www/html/domain/lib/vendor/symfony/data/web/sf">
      AllowOverride All
      Allow from All
   </Directory>
</VirtualHost>

任何帮助将不胜感激。

4

2 回答 2

1

问题在你的 symfony 配置中。所有 apache 配置文件都可以。

您需要在全局 security.yml 中添加它

default:
  is_secure: false
  is_ssl: true

sfGuardAuth/config/security.yml

secure:
  is_secure: false
  is_ssl: true

signin:
  is_secure: false
  is_ssl: true

signout:
  is_secure: false

如果你不想在你的 URL 集中没有“index.php”

no_script_name:         true

在您的全局应用程序 settings.yml

于 2012-05-14T13:43:57.593 回答
0

该网站是否可以在没有 index.php 和 http(不是 https)的情况下工作?

如果站点在没有 https 的情况下无法在 http 中运行,则问题可能出在 symfony 部分。你能告诉我们你的apps/[your apps]/config/settings.yml吗?特别寻找选项no_script_name

no_script_name设置确定是否将前端控制器脚本名称附加到生成的 URL 之前。默认情况下,它true由创建的第一个应用程序的环境的generate:app任务设置。prod

于 2012-05-14T11:58:08.017 回答