我想从网址获取网址:
192.168.0.1/movie-page.php?id=123
为:
192.168.0.1/movie/movie-name
甚至(现在):
192.168.0.1/movie/123
我通过使用这个网址来简化它(以使某些工作正常):
192.168.0.1/pet_care_info_07_07_2008.php至192.168.0.1/pet-care /
我的.htaccess文件:
RewriteEngine On
RewriteRule ^pet-care/?$ pet_care_info_07_07_2008.php [NC,L]
我做错了什么?我尝试了很多组合,但没有运气,我的耐心已经不多了......
我在我的本地NAS上运行它,默认情况下应启用mod_rewrite。我通过在.htaccess文件中输入随机字符串并打开页面测试了.htaccess,我收到404错误。我认为这意味着正在使用.htaccess,因为如果文件格式错误,页面将停止运行。
答案 0 :(得分:2)
如果要重写:
192.168.0.1/movie-page.php?id=123
也是
192.168.0.1/movie/movie-name
或192.168.0.1/movie/123
然后你会做类似的事情,但是会要求你手动为你想要的任何新路线(花哨网址)添加重写,最后你可能希望你的脚本动态创建路由或者只有一个切入点来消毒: / p>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^movie/([a-zA-Z0-9-]+)$ movie-page.php?id=$1 [L]
所以更好的方法是通过重写来路由所有内容:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
然后通过将$_GET['route']
与explode()
<?php
//192.168.0.1/movie/movie-name
$route = (isset($_GET['route'])?explode('/',$_GET['route']):null);
if(!empty($route)){
//example
$route[0]; //movie
$route[1]; //movie-name
}
?>
答案 1 :(得分:0)
你想要这样的东西:
RewriteRule ^movie/([0-9]*)$ /movie-page.php?id=$1 [L,R=301]
这将为电影ID版本提供数字ID。