我正在尝试和谷歌搜索几个小时,无法找到解决我的问题的方法。我想改写:
domain.com/profile.php?user=abc> domain.com/abc
我用:
RewriteRule ^(.*)/$ /profile.php?user=$1 [L]
最后只能使用斜杠。如果我尝试没有斜线
RewriteRule ^(.*)$ /profile.php?user=$1 [L]
我收到内部服务器错误!
完成.htaccess
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(css|jpg|gif|png|jar|js|html|htm|php)$
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
RewriteRule ^share/([^/]*)/$ /share/share.php?id=$1 [L]
RewriteRule ^(.*)/$ /profile.php?user=$1 [L]
<IfModule mod_deflate.c>
<FilesMatch "\.(html|php|txt|xml|js|css|svg)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE\s7 !no-gzip !gzip-only-text/html
Someboy知道我做错了什么?
谢谢, 科内尔
答案 0 :(得分:0)
第二次尝试时,你会得到500,因为你创造了一个无限循环:
^(.*)$
会一次又一次地匹配profile.php?user=xxx
...当您尝试^(.*)/$
时不是这种情况,因为(没有尾随斜线)这与profile.php?user=xxx
不匹配
相反,你可以这样做
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(css|jpg|gif|png|jar|js|html|htm|php)$
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
RewriteRule ^share/([^/]*)/$ /share/share.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/?$ /profile.php?user=$1 [L]