这是我的.htaaccess代码。
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/$ movie.php?name=$1
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example\.in$
RewriteRule ^/?$ "http\:\/\/example\.in" [R=301,L]
ErrorDocument 404 /404.php
AddDefaultCharset UTF-8
Header unset ETag
FileETag None
我的网站需要干净的网址。 我已经提到了很多教程和论坛,并创建了上面的代码。 但不工作..几乎我在与代码作斗争。 我不明白清楚的网址概念。我的php页面上是否有任何编码。
<a href='movie.php?name=titanic'> Titanic </a>
我在index.php文件中有这个链接。
点击链接泰坦尼克号时,我想要example.in/movie/titanic
。
此外,我想通过$ _ [请求]获取值。
我到底要做什么。请不要把这个问题重复,我搜索了很多,并没有清楚地得到这个概念。请帮帮我。
谢谢
答案 0 :(得分:6)
用以下代码替换您的代码:
ErrorDocument 404 /404.php
AddDefaultCharset UTF-8
Header unset ETag
FileETag None
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+movie\.php\?name=([^\s&]+) [NC]
RewriteRule ^ movie/%1? [R=301,L]
RewriteRule ^movie/([^/]+)/?$ movie.php?name=$1 [L,QSA]
答案 1 :(得分:2)
如果您想拥有干净的网址,那么您必须在html代码中使用干净的网址,例如使用
<a href="/movie/titanic">Titanic</a>
您的重写规则将采用服务器上的地址(实际上并不存在包含/movie
文件的titanic
目录,并将其翻译为实际的
/movie.php?name=titanic
但是,用户永远不会看到此URL,因为重写将完全在Apache中进行。只要您发送给用户的HTML仅包含“干净”网址,他们就永远不会看到查询字符串。
答案 2 :(得分:0)
RewriteEngine on
RewriteRule ^movie/([0-9a-zA-Z]+)$ movie.php?name=$1 [L]
在.htaccess文件中添加以上代码