我试图美化我的网址,我的网址就像那样
http://www.mysite.com/details.php?id=19&object=1
object = 1(videos)或object = 0(articles)
我想将此网址更改为
http://www.mysite.com/videos/19
当然我制作视频,因为我提到当object = 1表示视频
当object = 0时
我想要这个
http://www.mysite.com/articles/19
我试过从一些教程中使用它,但没有用。没有任何事情发生。
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^videos/([a-zA-Z]+)/([0-9]+)/$ details.php?object=$1&id=$2
以及如何使用RewriteCond
检查对象是否为1或0,如果为1则打印视频其他文章。
任何帮助都会有很大帮助。
答案 0 :(得分:1)
最好在这里使用RewriteMap
。以下是如何使用它的示例:
将以下行添加到httpd.conf
文件中:
RewriteMap objMap txt://path/to/objectMap.txt
像/path/to/objectMap.txt
一样创建一个文本文件:
articles 0
videos 1
在DOCUMENT_ROOT
下的.htaccess文件中添加以下行:
Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteRule ^([^/]+)/([0-9]+)/?$ /details.php?object=${objMap:$1}&id=$2 [L,QSA]
优势:通过此设置,您可以随时编辑或重新创建文件/path/to/objectMap.txt
,而无需添加新规则。
UPDATE:如果您无法控制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]