Php 正在从url获取变量,无法回显完整字符串
我有一个动态url,如下所示Php 正在从url获取变量,无法回显完整字符串,php,url,variables,mod-rewrite,get,Php,Url,Variables,Mod Rewrite,Get,我有一个动态url,如下所示 news/categories/s/23-brook-launch-new-zealand “23”是文章id,“brook launch new zealand”是文章标题 当我这样做时: echo $_GET['title']; 它只回答道:“布鲁克”,而不是整根弦 我正在对我的URL使用mod_rewrite,代码如下: RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+) /news/
news/categories/s/23-brook-launch-new-zealand
“23”是文章id,“brook launch new zealand”是文章标题
当我这样做时:
echo $_GET['title'];
它只回答道:“布鲁克”,而不是整根弦
我正在对我的URL使用mod_rewrite,代码如下:
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
如何回显完整字符串?您没有匹配可能的
-
s:
... ([0-9]+)-([a-zA-Z\-]+) /news/...
^^ You need to add these
因此,整条线将是:
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z\-]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-(([a-zA-Z]+-?)+) /news/view-article.php?category=$1&id=$2&title=$4 [NC]
您的重写规则不支持破折号请尝试此规则:
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([^/]*) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
用于匹配标题
([a-zA-Z]+)
的正则表达式只匹配一组leter(a-Z),不包括破折号(-
)。也许正则表达式的这一部分应该是:([a-zA-Z]+-?)+)
那么您的重写规则是:
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z\-]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-(([a-zA-Z]+-?)+) /news/view-article.php?category=$1&id=$2&title=$4 [NC]
我想你可能想要:
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z0-9-]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
对于您的版本,标题中只允许字母(a-zA-Z),因此正则表达式与破折号不匹配。上面的内容应该与破折号匹配,并且在标题中也允许数字(我想您可能会允许)
您甚至可能只想做:
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-(.+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
…并允许在标题中使用任何字符-您可以很容易地使用这些字符,因为标题是URL的最后一部分