htaccess用查询字符串和变量重写url

时间:2015-07-22 10:40:39

标签: php regex apache .htaccess mod-rewrite

我的网站上有以下文件

{website}/restserver/user-create.php?id=...
{website}/restserver/user-read.php
{website}/restserver/session-login.php
...

我想使用以下地址访问它们

{website}/user/create?id=...
{website}/user/read?id=...
{website}/session/login?id=...

我想你明白了。我需要使用两级路径来构建文件名,维护查询字符串。

有可能吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

RewriteEngine On
RewriteBase /
RewriteRule ^/user/create$ /restserver/user-create.php [NC,L]
RewriteRule ^/user/read$ /restserver/user-read.php [NC,L]
RewriteRule ^/session/login$ /restserver/session-login.php [NC,L]

答案 1 :(得分:1)

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代码:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?((?!restserver/)[^/]+)/([^/])/?$ restserver/$1-$2.php [L,NC]

查询字符串将自动转移到目标URI。

答案 2 :(得分:0)

从上述解决方案中,我找到了一个通用解决方案。

RewriteRule ^([^/\.]+)/([^/\.]+)?$ restserver/$1-$2.php [L]

谢谢大家!