2

我想美化我的网址,我的网址是这样的

   http://www.mysite.com/details.php?id=19&object=1

object=1(视频)或 object=0(文章)

我想将此网址更改为

    http://www.mysite.com/videos/19

我当然会制作视频,因为我提到当 object = 1 表示视频时

当对象 =0

我要这个

    http://www.mysite.com/articles/19

我尝试从一些教程中使用它,但没有奏效。什么也没发生。

    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^videos/([a-zA-Z]+)/([0-9]+)/$ details.php?object=$1&id=$2

以及我如何执行 if 条件RewriteCond来检查对象是 1 还是 0 ,如果 1 则打印视频其他文章。

任何帮助将不胜感激。

4

1 回答 1

1

最好在RewriteMap此处用于您的情况。这是一个如何使用它的示例:

  1. 将以下行添加到您的httpd.conf文件中:

    RewriteMap objMap txt://path/to/objectMap.txt
    
  2. /path/to/objectMap.txt像这样创建一个文本文件:

    articles 0
    videos 1
    
  3. 在您的 .htaccess 文件中添加以下行DOCUMENT_ROOT

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    
    RewriteRule ^([^/]+)/([0-9]+)/?$ /details.php?object=${objMap:$1}&id=$2 [L,QSA]
    

优点:有了这个设置,您可以随时编辑或重新创建文件/path/to/objectMap.txt,而无需添加新规则。

更新:如果您无法控制 Apache 配置,您将不得不处理多个重写规则(每个对象 id 映射一个),如下所示:

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+details\.php\?id=([^&]+)&object=1\s [NC]
RewriteRule ^ /videos/%1? [R=302,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+details\.php\?id=([^&]+)&object=0\s [NC]
RewriteRule ^ /articles/%1? [R=302,L]

RewriteRule ^videos/([0-9]+)/?$ /details.php?object=1&id=$1 [L,QSA,NC]
RewriteRule ^articles/([0-9]+)/?$ /details.php?object=0&id=$1 [L,QSA,NC]
于 2013-07-17T20:42:54.007 回答