mod将域后的所有内容重写为get

时间:2011-05-18 02:41:58

标签: php http .htaccess url mod-rewrite

如果尚未获取域名,我怎样才能将域名重写为get?

例如:example.com/blah/blah.blah

将成为example.com/?blah/blah.blah

基本上我想要做的就是添加一个?在第一次正斜线之后如果还没有。

谢谢!

3 个答案:

答案 0 :(得分:2)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /index.php?$0 [QSA]

但是这个解决方案有一些问题,@ anubhava更好; - )

答案 1 :(得分:1)

非常简单地使用变量%{REQUEST_URI}作为查询参数:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/index.php$ [NC]
RewriteRule . /index.php?%{REQUEST_URI} [L,QSA]

答案 2 :(得分:0)

另一种技术是使用$ _GLOBALS ['PATH_INFO']变量,该变量将在脚本名称之后提供其余路径,因此适用于:

http://example.com/somefile.php/james/fred/blogs.csv?something=value

PATH_INFO将设置为“/james/fred/blogs.csv”,您仍然可以单独使用GET / POST变量作为修饰符。这可能非常有用,例如,如果您要创建.csv文件并将其显示在远程浏览器客户端,就好像它名为“blogs.csv”。