这是我的.htaccess
代码。
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]
获取价值。
我到底要做什么?请不要将此问题标记为重复,我已经搜索了很多并且没有清楚地了解这个概念。请帮帮我。
感谢。
答案 0 :(得分:1)
.htaccess
中的规则处理url相对于.htaccess
文件所在目录的规则。如果你的www-root中有.htaccess
,那么RewriteRule的第一个参数将会匹配域名后面和查询字符串(movie/titanic
中的http://example.com/movie/titanic?is=amovie
)之前的所有内容。要修复规则,您需要将规则更改为:
RewriteRule ^movie/([a-z0-9]+)/?$ movie.php?name=$1 [L,NC]
[L]
标志停止重写此轮次,[NC]
标志忽略大小写。
除此之外,您只需要一个RewriteEngine on
,这需要超出您编写的所有规则。您可以放心地删除第二个。
答案 1 :(得分:0)
您可以将.htaccess
放入主目录:
RewriteEngine On
RewriteRule ^movie/([a-zA-Z0-9]+)(/)$ movie.php?name=$1 [L]
或在movies/
目录中:
RewriteEngine On /movies/
RewriteRule ^([a-zA-Z0-9]+)(/)$ ../movie.php?name=$1 [L]
movie.php
位于主目录中。
RewriteEngine On
每个htaccess只能启动一次。