.htaccess规则 - 如何重定向传入" /login.php" url请求" index.php?do = login"?

时间:2016-08-23 07:38:07

标签: .htaccess mod-rewrite url-rewriting url-redirection

我想通过.htaccess

将所有传入的网址请求重定向到index.php

示例:

/johngroup -> /index.php?do=johngroup
/addmem    -> /index.php?do=addmem
/autoshare -> /index.php?do=autoshare
/spamwall  -> /index.php?do=spamwall

index.php将处理所有请求。

以下代码无效:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteCond %{REQUEST_URI} ^/([A-Za-z0-9_-.]*).php?    do=(.*)
   RewriteRule .* /%1.php?do=%2 [R=301,L]
</IfModule>

2 个答案:

答案 0 :(得分:0)

  

example.com/test.phpexample.com/index.php?do=test

在根.htaccess文件中尝试以下操作:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^index\.php$
RewriteRule ^(\w+)\.php$ index.php?do=$1 [L]

以上将内部重写 /test.php/index.php?do=test(即。/test.php仍保留在浏览器地址栏中),无论test.php是否.php作为文件系统上的物理文件存在。基本上,任何文件扩展名为RewriteCond的文件。 test.php指令阻止重写循环。

如果您只需要重写可映射到物理文件的URL,例如。 RewriteEngine On RewriteCond %{REQUEST_URI} !^index\.php$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(\w+)\.php$ index.php?do=$1 [L] 是文件系统上的物理文件,然后在重写之前添加一个附加条件来检查是否存在此文件:

public static Key<ParentEntity> getKey(Long id){
            return Key.create(ParentEntity.class, id);
        }

答案 1 :(得分:0)

这对我有用:

RewriteEngine On                                
RewriteRule ^index.php - [L]                    # 1
RewriteRule ^(.*).php$ index.php?do=$1 [L]      # 2
RewriteRule ^(\w+)$ index.php?do=$1             # 3

说明:

  1. 如果网址以/index.php开头,请停止处理。否则继续下一个规则。
  2. 如果网址格式为/x.php,请重写为/index.php?do=x并停止进一步处理。否则继续下一个规则。
  3. 将任何网址/test转换为/index.php?do=test
  4. 您还可以使用以下网站测试和调整htaccess规则: