我不确定这是否可行,但我想像这样使用mod_rewrite:
http://abc.com/something => http://abc.com/script.php?q=something
这不起作用:
Options +FollowSymLinks
RewriteEngine on
RewriteRule /(.*)$ /script.php?q=$1
有可能吗?
修改 我应该提到mod_rewrite在我使用它时工作正常:
Options +FollowSymLinks
RewriteEngine on
RewriteRule script/(.*)$ /script.php?q=$1
再次编辑: http://emailsms.me/redirect.php?id=abc
使用此:
RewriteEngine on
RewriteRule ^([A-z]{1,})$ /redirect.php?q=$1
理论上http://emailsms.me/abc应该输出abc(它所做的只是回显当前的输入)。但我得到404错误。
更新:好像Options + FollowSymLinks在这里引起了问题。如果我发表评论,我会收到404错误,但是当它出现在那里并且我放了任何东西(我的意思是甚至是#)时,我的日志中出现了这个错误:
[Fri Oct 14 02:20:26 2011] [alert] [client 1.2.3.4] /home/me/redirects/.htaccess: Illegal option #
答案 0 :(得分:1)
听起来你是从.htaccess那里做的,而不是vhost配置。在这种情况下,您必须丢失RewriteRule中的第一个/。
答案 1 :(得分:1)
试试这个:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /script.php?q=$1 [L,QSA]
您可能不希望在重写规则中使用尾随斜杠,并且您需要检查所请求的文件是否不存在(2个RewriteCond行),否则您将收到500 Server错误,因为重写循环(/ script.php将始终匹配^(。*)$并再次重写)。请注意,如果您没有/script.php文件,则会出现500错误,因为重写将循环。
答案 2 :(得分:0)
您可以尝试以下方式:
RewriteEngine on
RewriteRule ^([A-z]{1,})$ /script.php?q=$1
你可以看到(。*)崩溃