URL重写htaccess问题

时间:2010-04-29 16:40:02

标签: .htaccess mod-rewrite url-rewriting

对于htaccess redirects这个世界来说相当新。我试图强制我的Zend MVC中的所有重定向到我的https但我得到一个请求的URL 未找到错误请求不通过索引控制器

实施例

https://www.example.com/auth/register

提供 请求的网址/身份验证/注册 未找到错误。但是,如果我删除https重定向规则,它可以正常工作。如果我将网址调整为

https://www.example.com/index.php/auth/register

它工作正常。 网址

https://www.example.com/index/faq 

工作正常,因为它通过索引控制器。

我的.htaccess文件看起来像这样

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  mod_gzip_item_include handler ^cgi-script$
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_exclude mime ^image/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

我需要调整以获取网址

https://www.example.com/auth/register

工作?

1 个答案:

答案 0 :(得分:0)

您的代码显示为“如果这与文件,链接或目录匹配,则不执行任何操作并继续。”在文件实际存在的情况下,您需要跳过最终的重写规则:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [S=1,NC,L]
RewriteRule ^.*$ index.php [NC,L]