htaccess重写获取变量问题

时间:2014-06-23 17:51:22

标签: .htaccess mod-rewrite

我注释掉的第5和第6条规则没有做任何事情,也不确定是否有任何其他方法可以获得我的结果。我希望将mysite.us/item.php?id=1显示为mysite.us/item/1

目前我的网址最终是mysite.us/item?id=1

也许有人可以帮我清理一下,因为它对我来说很新鲜。

一些事情:godaddy服务器,即时通讯使用无扩展链接(不确定这是否正确,但它是ajax继续工作的唯一方式)

Options +FollowSymlinks -MultiViews -Indexes
RewriteEngine on

RewriteBase /

# Makes sure www is not in url
RewriteCond %{HTTP_HOST} !^mysite.us$ [NC]
RewriteRule (.*) http://mysite.us/$1 [R=301]

# Removes index.php from url to only display homepage
RewriteRule ^index.php$ http://mysite.us/ [R=301]

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://mysite/$1 [R=301]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://mysite.us/$1 [R=301]

#RewriteRule ^item/([^/.]+)/?$ item.php?id=$1 [L]
#RewriteRule ^.+/item/([0-9]+) item.php?id=$1 [NC,L,R]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]

更新 好的,所以我知道自己刚刚重写,但现在我觉得非常愚蠢,并且会表现出我所犯的错误,希望有助于为将来的某个人节省时间。因此,我必须指出,下面提供的答案确实有效,并且是一个很好的解决方案。我的第5和第6条规则现在也有效。

我的印象是重写从我提供的链接清理了我的网址。 相反,我将在链接中提供干净的URL,重写规则提供所需的文件。从安全角度来看,这很有道理,但我只想要一个干净的URL。

此外,我所有的头文件,如js和css都需要是绝对的URL,这与我的教学不同。

希望这有助于其他人。

1 个答案:

答案 0 :(得分:0)

试一试......

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^item/([0-9]+)$ /item.php?id=$1&%1 [L]

这也会捕获您稍后可能添加的任何查询字符串(即/item/1?foo=bar