隐藏“https”连接的index.php?

时间:2012-05-11 06:45:14

标签: apache .htaccess https url-rewriting symfony-1.4

我想从网址中隐藏“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文件包含以下vhost设置:

<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>

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

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

您需要在全局security.yml

中添加此项
default:
  is_secure: false
  is_ssl: true

sfGuardAuth /配置/ 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

答案 1 :(得分: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   第一个应用程序创建。