4

这是我的 .htaac​​cess 代码。

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

我的网站需要干净的网址。我参考了很多教程和论坛并创建了上面的代码。但不工作..几乎我正在与代码作斗争。我不清楚干净的 url 概念。有没有我要在我的 php 页面上编写的编码。

<a href='movie.php?name=titanic'> Titanic </a>

我的 index.php 文件中有这个链接。

我想要example.in/movie/titanic同时点击链接泰坦尼克号。

我也想通过 $_[request] 获得价值。

我到底要做什么。请不要重复这个问题,我已经搜索了很多并且没有清楚地了解这个概念。请帮帮我。

谢谢

4

3 回答 3

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]
于 2013-09-17T14:05:45.620 回答
2

如果你想要干净的 URL,那么你必须在你的 html 代码中使用干净的 URL,例如使用

<a href="/movie/titanic">Titanic</a>

您的重写规则将采用服务器上不存在的地址(毕竟您实际上没有/movie包含文件的目录),并将其转换为实际的titanic

/movie.php?name=titanic

然而,用户永远不会看到这个 url,因为重写将完全在 Apache 中进行。只要您发送给用户的 HTML 只包含“干净”的 url,他们就永远不会看到查询字符串。

于 2013-09-17T14:12:22.747 回答
2
RewriteEngine on
RewriteRule ^movie/([0-9a-zA-Z]+)$ movie.php?name=$1 [L]

在 .htaccess 文件中添加上述代码

于 2016-02-04T18:41:43.660 回答