Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写规则重定向到index.php_Php_Apache_.htaccess_Zend Framework_Redirect - Fatal编程技术网

重写规则重定向到index.php

重写规则重定向到index.php,php,apache,.htaccess,zend-framework,redirect,Php,Apache,.htaccess,Zend Framework,Redirect,这有点奇怪 在我正在开发的一个使用Zend framework的网站中,需要将任何以“/”结尾的URL重定向到不带“/”的相同URL(例如) 我将其添加到.htaccess文件中: RewriteRule ^(.+[^/])/$ /$1 [R=301,L] RewriteEngine On RewriteBase / RewriteRule ^(.+[^/])/$ /$1 [R=301,L] # Some other strange redirections Rewrit

这有点奇怪

在我正在开发的一个使用Zend framework的网站中,需要将任何以“/”结尾的URL重定向到不带“/”的相同URL(例如)

我将其添加到.htaccess文件中:

RewriteRule ^(.+[^/])/$     /$1 [R=301,L]
RewriteEngine On

RewriteBase /

RewriteRule ^(.+[^/])/$     /$1 [R=301,L]

# Some other strange redirections
RewriteRule ^index/$ / [R=301]
RewriteRule ^css/$ / [R=301]
RewriteRule ^js/$ / [R=301]

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

# compression
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/atom_xml
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/x-httpd-php
    AddOutputFilterByType DEFLATE application/x-httpd-fastphp
    AddOutputFilterByType DEFLATE application/x-httpd-eruby
</IfModule>
对于许多URL来说,这很好。但是像这样的URL会被重定向到,这是不希望的。有人能解释一下为什么会这样吗

我知道你可以抱怨像“/index/test”这样不友好的URL,但我现在需要接受它:)

要求是避免这些被搜索机器人视为重复的URL,这会像一些人认为的那样影响SEO

以下是完整的.htaccess文件:

RewriteRule ^(.+[^/])/$     /$1 [R=301,L]
RewriteEngine On

RewriteBase /

RewriteRule ^(.+[^/])/$     /$1 [R=301,L]

# Some other strange redirections
RewriteRule ^index/$ / [R=301]
RewriteRule ^css/$ / [R=301]
RewriteRule ^js/$ / [R=301]

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

# compression
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/atom_xml
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/x-httpd-php
    AddOutputFilterByType DEFLATE application/x-httpd-fastphp
    AddOutputFilterByType DEFLATE application/x-httpd-eruby
</IfModule>
重新编写引擎打开
重写基/
重写规则^(+[^/])/$/$1[R=301,L]
#其他一些奇怪的重定向
重写规则^index/$/[R=301]
重写规则^css/$/[R=301]
重写规则^js/$/[R=301]
RewriteCond%{REQUEST_FILENAME}-s[或]
RewriteCond%{REQUEST_FILENAME}-l[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则^.*$-[NC,L]
重写规则^.*$index.php[NC,L]
#压缩
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType泄气文本/普通
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE应用程序/xhtml+xml
AddOutputFilterByType DEFLATE应用程序/xml
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE应用程序/rss+xml
AddOutputFilterByType DEFLATE应用程序/atom\u xml
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE应用程序/javascript
AddOutputFilterByType DEFLATE应用程序/x-javascript
AddOutputFilterByType DEFLATE应用程序/x-httpd-php
AddOutputFilterByType放气应用程序/x-httpd-fastphp
AddOutputFilterByType放气应用程序/x-httpd-eruby

当打开“多视图”选项时,此行为似乎会出现。多视图允许使用mod_协商进行内容协商。您可以通过在.htaccess的顶部添加以下内容来关闭它:

Options -MultiViews
有关详细信息,请参阅和有关的更多信息

或者,您可以将index.php重命名为prettybutterflies.php,并将重写规则更改为:

RewriteRule ^ prettybutterflies.php [NC,L]

请发布完整的.htaccess文件好吗?@Sumurai8在问题中添加注意,Zend front Controller需要RewriteRule ^.*$index.php[NC,L]可能与此无关,否则会出现内部服务器错误,但AddOutputFilterByType是mod_筛选器的一部分,而不是mod_deflate的一部分。(请注意,由于您使用的是永久重定向,您可能需要清除缓存)这很神奇,很有效!非常感谢。但我的小脑袋无法解释多视图会如何影响这一点。服务器读取url中的索引。它在文件夹中看到一个文件index.php。我相信它会查看客户端想要接收的内容,并检查index.php将返回的内容。它确定index.php确实是一种方法,并将其重写到我的邮箱中php并使用
/
后面的任何内容作为路径信息。然后mod_rewrite启动并在这个新url上工作。