我正在尝试将网址重定向到我的网站,但是我遇到了让它正常工作的问题..我已经阅读了文档并且我做了大量的研究,所以我相信我是现在允许寻求帮助。
我得到的“最接近”的正则表达式命令是..
Next
我想?
我想要的结果是:
(/\?page=)(.*) matches ?page=about
!(/\?page=) matches everything but /?page=
我尝试过很多不同的东西,老实说,我真的无法让最简单的事情发挥作用。至少我设法将我的访问者重定向到www.domain.com,这是一个进步,不幸的是我在网上发现了代码并且没有自己编写。
RewriteCond是否必要?
我的意思是......我甚至不明白为什么以下拒绝工作所以请赐教,解释我做错了什么以及如何解决我的问题。
domain.com/?page=home -> domain.com/home
domain.com/?page=about -> domain.com/about
domain.com/?page=contact -> domain.com/contact
domain.com/?page=guestbook -> domain.com/guestbook
答案 0 :(得分:0)
在这里,对此进行了测试,似乎对我有用:
RewriteEngine On
#Redirect the url if loaded with page=A or B or C (testing values)
RewriteCond %{QUERY_STRING} page=(A|B|C) [NC]
RewriteRule (.*) /%1/? [R=301,L]
#might not be needed if you already have a solution for this
#rewrite the url to index if the file doesn't exist.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?q=$1 [L,QSA]
答案 1 :(得分:0)
您可以在DOCUMENT_ROOT/.htaccess
文件中使用此代码:
RewriteEngine On
RewriteBase /
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /(?:index\.php)?\?page=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L,NE]
# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ ?page=$1 [L,QSA]
答案 2 :(得分:-1)
首先告诉htaccess你要尊重真实的文件和目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /
然后使用像
这样的规则RewriteRule ^home$ index.php?page=home&%{QUERY_STRING} [L]
RewriteRule ^about$ index.php?page=about&%{QUERY_STRING} [L]
等等。
&%{QUERY_STRING}仅当您最终打算传递其他网址参数时,例如/about?lag=en