我希望使用htaccess / mod_rewrite将域中的所有页面永久重定向到SAME域上的一个页面。
基本上我希望域名请求的任何页面在domain.com /
返回一个保留页面[index.php] 到目前为止,我的大多数尝试都会导致错误,因为它们会将服务器抛入循环中。提前致谢
.K
答案 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)
为什么不设置404错误处理程序指向保留页面(并将所有其他内容保留在doc根目录之外)
下进行。
答案 3 :(得分:0)
感谢所有人,
让它运转起来,这可能对其他人有所帮助:
RewriteRule!^(index.php)|。(js | ico | gif | jpg | png | css | mp3 | xml | swf)$ /index.php [L,R = 301]
.K