将域上的所有页面重定向到一个文件

时间:2010-01-25 13:38:38

标签: apache .htaccess mod-rewrite http-status-code-301

我希望使用htaccess / mod_rewrite将域中的所有页面永久重定向到SAME域上的一个页面。

基本上我希望域名请求的任何页面在domain.com /

返回一个保留页面[index.php] 到目前为止,我的大多数尝试都会导致错误,因为它们会将服务器抛入循环中。

提前致谢

.K

4 个答案:

答案 0 :(得分:3)

您需要将要重定向的目标排除在外:

RewriteEngine on
RewriteRule !^index\.php$ /index.php [L,R=301]

如果您只想重定向无法映射到文件系统中现有文件的请求,请添加以下条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ /index.php [L,R=301]

但在这种情况下你应该回复404.

答案 1 :(得分:2)

这是一个简单的实现:

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php

更复杂一点:

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

两者均取自Zend Framework Zend_Controller Programmer's Reference Guide。这是另一个有用的文档Apache Module mod_rewrite

答案 2 :(得分:0)

ISR最近在这里被问到 - 但我现在找不到q。

为什么不设置404错误处理程序指向保留页面(并将所有其他内容保留在doc根目录之外)

下进行。

答案 3 :(得分:0)

感谢所有人,

让它运转起来,这可能对其他人有所帮助:

RewriteRule!^(index.php)|。(js | ico | gif | jpg | png | css | mp3 | xml | swf)$ /index.php [L,R = 301]

.K