.htaccess部分重定向索引请求

时间:2012-08-21 04:53:20

标签: .htaccess webserver

我正在为他们网站上的朋友做一些工作,当我们在新网站上工作时,我想设置他们的.htaccess文件以使用以下规则重定向用户:

  • 将对/或/index.html的任何请求重定向到子目录(例如,http://example.com/http://example.com/index.html都应重定向到http://example.com/legacy/index.html
  • 允许直接请求index.php无需重定向(例如http://example.com/index.php
  • 即可通过
  • 如果可能,对第二个子目录的请求会被重定向到index.php(例如http://example.com/beta/重定向到http://example.com/index.php

这可能是一个简单的请求,但我没有.htaccess使用的规则语言的经验。

提前致谢!!

2 个答案:

答案 0 :(得分:1)

  • 将对//index.html的所有请求重定向到子目录(例如,http://example.com/http://example.com/index.html都应重定向到http://example.com/legacy/index.html

    RewriteEngine On
    RewriteRule ^(index\.html)?$ /legacy/index.html [L]
    
  • 允许对index.php的直接请求无需重定向即可通过(例如http://example.com/index.php

    RewriteRule ^index\.php$ - [L]
    
  • 如果可能,对第二个子目录的请求会被重定向到index.php(例如http://example.com/beta/重定向到http://example.com/index.php

    RewriteRule ^beta/?$ /index.php [L]
    

这些都将放在文档根目录中的htaccess文件中。如果您确实想要重定向浏览器以便更改地址栏中的网址,请在方括号中添加R=301[L,R=301]。如果您说“对第二个子目录的请求被重定向到index.php ”意味着“任何子目录”,那么该规则需要更改为:

RewriteRule ^([^/]+)/?$ /index.php [L]

答案 1 :(得分:0)

我和codeigniter做了相反的事情......

    RewriteEngine On    
    RewriteBase /myproject
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

    $config['base_url'] = 'http://localhost/myproject/';
    $config['index_page'] = '';

希望这会有所帮助