1

我在他们的网站上为朋友做一些工作,当我们在新网站上工作时,我想设置他们的 .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 使用的规则语言没有经验。

提前致谢!!

4

2 回答 2

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 文件中。如果您确实想重定向浏览器以使地址栏中的 URL 发生变化,R=301请在方括号中包含 a: [L,R=301]。如果当您说“对第二个子目录的请求被重定向到 index.php ”时,意思是“任何子目录”,则需要将规则更改为:

RewriteRule ^([^/]+)/?$ /index.php [L]
于 2012-08-21T05:13:09.597 回答
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'] = '';

希望这可以帮助

于 2012-08-21T05:03:07.170 回答