0

我正在尝试从以下位置获取网址:

192.168.0.1/movie-page.php?id=123

到:

192.168.0.1/电影/电影名

甚至(现在):

192.168.0.1/电影/123

我已经通过使用这个 url 来简化它(让某些东西工作):

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 正在使用,因为如果文件格式错误,页面将停止运行。

4

2 回答 2

2

如果你想重写: 192.168.0.1/movie-page.php?id=123

192.168.0.1/movie/movie-name或者192.168.0.1/movie/123

然后你会做类似的事情,但需要你手动为你想要的任何新路由(花哨的 url)添加重写,最终你可能希望你的脚本动态创建路由或有一个入口点来清理:

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
}
?>
于 2012-09-20T19:51:13.600 回答
0

你想要这样的东西:

RewriteRule ^movie/([0-9]*)$ /movie-page.php?id=$1 [L,R=301]

这将为电影 ID 版本提供数字 ID。

于 2012-09-20T19:52:43.830 回答