我想通过.htaccess
示例:
/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>
答案 0 :(得分:0)
example.com/test.php
至example.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
说明:
/index.php
开头,请停止处理。否则继续下一个规则。/x.php
,请重写为/index.php?do=x
并停止进一步处理。否则继续下一个规则。/test
转换为/index.php?do=test
。您还可以使用以下网站测试和调整htaccess规则: