您好,我正在建立一个网站,我想要干净整洁的链接。我正在尝试使用get参数进行链接,看起来很清晰。以下是链接目前的示例链接:
http://www.example.com/index.php?item=cd-player
以下是我希望链接显示的方式:
http://www.example.com/cd-player
我已经能够从url中删除index.php而只留下参数但是我需要帮助来摆脱"?item"还有点。
这是我到目前为止所尝试的内容:
RewriteRule ^index\.php(.*)$ /$1 [R,L,QSA]
RewriteRule ^(.+?)/?$ /?item=$1 [L,QSA]
此外,这可能是PHP代码而不是.htaccess文件的代码,但如果用户输入http://www.example.com/cd-player
,它将如何知道" cd-player"是一个名为" item"?
编辑:我遇到的问题是,我使用以下代码删除文件扩展名,下面的答案中的代码将文件视为查询:
RewriteRule ^([^\.]+)$ $1.php [NC,L]
答案 0 :(得分:0)
你需要这样做。这将允许您拥有干净的链接
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/.]+)$ $1.php [NC,L]
#This means if its not a real file
RewriteCond %{REQUEST_FILENAME} !-f
#This means if its not a real directory
RewriteCond %{REQUEST_FILENAME} !-d
#Then take the capture and rewrite it
RewriteRule ^(.+)$ /index.php?item=$1 [L]
答案 1 :(得分:0)
请改为尝试:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?item=$1 [L]
答案 2 :(得分:0)
实际上你需要2条规则:
RewriteEngine On
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /index\.php\?item=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L,NE]
# add .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?item=$1 [L,QSA]