Mod Rewrite,将子目录转换为查询字符串?

时间:2013-02-19 04:06:22

标签: .htaccess

我正在尝试将子目录转换为搜索查询。所以基本上:

example.com/pizza

将转换为:

example.com/?s=pizza

我对htaccess有基本的了解,之前我做过类似的事情,但这次我无法使用。这就是问题所在:

这有效:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ /results/?s=$1 [L,QSA]

然而,当我将重写目标指向根时,用户被重定向到“example.com”而没有查询字符串。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ /?s=$1 [L,QSA]

如何将“example.com/pizza”重写为“example.com/?s=pizza”?

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(?:.*)?/([^/]+)/?  [NC]
RewriteRule .*      /?s=%1                     [L]

静默地映射:

带有或不带斜线的

http://example.com/any/number/of/folders/parameter

要:

http://example.com/?s=parameter

假设所有字符串都是可变的。

对于永久性和可见的重定向,请将[L]替换为[R=301,L]