我知道这里有很多帖子已经描述了这个完全相同的问题,但我一直在仔细研究它们并尝试不同的解决方案无济于事。
我正在尝试在末尾重写带有查询字符串的URL,并将查询字符串的值写入URL的末尾。我已尝试过无数答案中的大量模式,但我不断更改URL或500内部服务器错误。
这是我的htaccess:
RewriteEngine On
Options +FollowSymlinks
Options All -Indexes
ErrorDocument 404 http://domain.com/oh/shit/you/broke/the/internet
RewriteRule ^oh/shit/you/broke/the/internet$ /404.php [L]
RewriteRule ^email/([^/]+)/?$ /email/?name=$1 [L,NC,QSA]
我希望将http://domain.com/email/?name=blah重写为http://domain.com/email/blah
我在这里缺少什么?
=====
查看完日志后,我发现了以下很多错误:
Invalid command '^email/([^/]+)/?$', perhaps misspelled or defined by a module not included in the server configuration
Invalid command '^/email/([^/]+)/?$', perhaps misspelled or defined by a module not included in the server configuration
File does not exist: /home/username/domain.com/email/blah
这是包含修复后的完整htaccess文件:
RewriteEngine On
Options +FollowSymlinks
Options All -Indexes
ErrorDocument 404 http://domain.com/oh/shit/you/broke/the/internet
RewriteRule ^oh/shit/you/broke/the/internet$ /404.php [L]
RewriteCond %{THE_REQUEST} \s/+email/?\?name=([^\s&]+) [NC]
RewriteRule ^ /email/%1? [R=301,L]
RewriteRule ^email/([^/]+)/?$ /email/?name=$1 [L,NC,QSA]
答案 0 :(得分:1)
你的语法错误。您的代码没有RewriteRule
个关键字。
尝试此规则:
RewriteEngine On
Options +FollowSymlinks
Options All -Indexes
RewriteCond %{THE_REQUEST} \s/+email/?\?name=([^\s&]+) [NC]
RewriteRule ^ /email/%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^email/([^/]+)/?$ /email/?name=$1 [L,NC,QSA]