如何从URL中提取变量部分以及如何知道URL变量是否附加了数字?

时间:2014-01-31 15:47:05

标签: php .htaccess mod-rewrite

我有这样的网址:

www.example.com/education/edu.php?Main=Colleges&Category=Engineering-colleges

我使用.htaccess

重写此网址
www.example.com/education/Colleges/Engineering-colleges

此外,我在同一个education目录中有另一个网址,如:

www.example.com/education/eduS.php?Main=Colleges&CollegeId=$Id&CollegeName=$Name

我想像这样重写这个网址:

www.example.com/education/Colleges/$Name-sqr$Id

如何实现这一目标?我无法想到一种方法,因为上面两个重写URL具有相同数量的参数。所以我无法将它们重定向到正确的页面。

这是我的问题:

  • 有没有办法使用.htaccess验证带有sqr$Id的网址变量并重定向到eduS.php页面。
  • 如何从该URL中提取Id并使该变量用于该页面中的操作。

3 个答案:

答案 0 :(得分:0)

您可以使用不同的正则表达式轻松实现此目的。我想你已经这样做了,所以你只能应用这样的规则:

(\w+)\-sqr(\d+)

顺便说一下,使用id-name会不会更好?

(\d+)\-(\w+)

答案 1 :(得分:0)

尝试:

RewriteRule ^([^/]+)/([^/]+)-sqr([0-9]+)$ eduS.php?Main=$1&CollegeId=$3&CollegeName=$2 [L]

在“education”文件夹中。它应该之前你重写为edu.php的其他规则。如果您的规则位于文档根目录中,那么它需要如下所示:

RewriteRule ^education/([^/]+)/([^/]+)-sqr([0-9]+)$ /education/eduS.php?Main=$1&CollegeId=$3&CollegeName=$2 [L]

答案 2 :(得分:0)

/education/.htaccess

中试用此代码
RewriteEngine On
RewriteBase /education/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^-]+)-sqr([0-9]+)/?$ eduS.php?Main=$1&CollegeId=$3&CollegeName=$2 [L,QSA,NC]

RewriteRule ^([^/]+)/([^/]+)/?$ eduS.php?Main=$1&Category=$2 [L,QSA]