我正在改写我的问题。
下面我给出了我想要做的所有细节,以及我得到的结果。我希望这次能够非常清楚。我在这里有一个样本页面www.broadcast2world.com/samples.php。
我们在页面上看到的所有链接和数据都来自数据库。现在假设我们点击“更多信息”链接,查看特定视频社交控制。该视频的特定href被触发为<a href="video.php?pid='.$id.'">
。它以http://www.broadcast2world.com/video.php?pid=66.
我使用
将该id识别为变量if(!isset($_GET['pid'])){
$pageid='66';
}
else{
$pageid=$_GET['pid'];
}
使用$ pageid变量,我运行一个查询,最终为该特定视频准备页面。
我的搜索引擎优化人员需要的是www.broadcast2world.com/video/name-of-the-video格式的网址。
现在的问题是,如果我做了一个mod_rewrite修正案,下面是Ben的精彩解释,我无法弄清楚,如何将该视频名称与其ID相关联。我确信在为视频创建特定网址时必须要修改一些内容,如上所述。但我真的不知道是什么?再次感谢您的精彩支持
答案 0 :(得分:2)
该网站生成的.htaccess代码存在许多问题。
.
)应在RewriteRule指令的左侧进行转义 - 即\.php
。RewriteBase
指令。不是必需的,因为/
被视为默认值,但为了便于阅读,我倾向于使用它。重写指令尤其仅考虑REQUEST_URI组件。以下内容来自mod_rewrite manual page。
REQUEST_URI请求的URI的路径组件,例如 “/index.htm”明明。这显然排除了查询字符串 可用作名为QUERY_STRING的变量。
以下代码在注释中进行了解释,此处的调试信息可以在下面找到。
# Enable rewrite engine http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteengine
RewriteEngine On
# Sets the base URL for per-directory rewrite http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
RewriteBase /
# Match the regular expression ^pname=...$ with the QUERY_STRING variable as the subject
# Query string starts with pname (`^`).
# Matches exactly pname=overviewvideos.
# Must end with overviewvideos (`$`)
RewriteCond %{QUERY_STRING} ^pname=overvidevideos$
# If the above condition is met, redirect to the 2nd parameter.
# Note the escaped period (\.)
# Note the status code 302 (Found, temporary) Can be 301 for permanent etc.
# Note the L flag - this prevents further rules being processed if the conditions are met. (L for Last)
# Note that at this stage we are back to matching the REQUEST_URI, so just allvideos.php in our regular expression. Must start and end with the string allvideos.php
RewriteRule ^allvideos\.php$ allvideos.php?pname=Overview%20Videos [R=302,L]
输入网址:http://www.yoursite.com/allvideos.php?pname=overvidevideos
RewriteCond %{QUERY_STRING} ^pname=overvidevideos$ This condition was met
RewriteRule ^allvideos\.php$ allvideos.php?pname=Overview%20Videos [R=302,L]
This rule was met, the new url is http://www.yoursite.com/allvideos.php?pname=Overview%20Videos
Test are stopped, because of the R in your RewriteRule options. A redirect will be made with status code 302
输出网址:http://www.yoursite.com/allvideos.php?pname=Overview%20Videos
要重复这些规则,您可以复制以RewriteCond和RewriteRule开头的行。
答案 1 :(得分:1)
替换以下行
RewriteRule ^allvideos.php/pname=overviewvideos$ allvideos.php?pname=Overview%20Videos
使用以下代码
RewriteRule ^allvideos.php?pname=overviewvideos$ allvideos.php?pname=Overview%20Videos
请注意用/
?
同样对第二次重写规则进行相同的更改