Regex ApacheModrewrite.htaccess-类似链接
我想知道是否有可能实现以下目标: 有时第二个属性将显示在子菜单中Regex ApacheModrewrite.htaccess-类似链接,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我想知道是否有可能实现以下目标: 有时第二个属性将显示在子菜单中 RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2 [L,QSA] 有时它会是位置 RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?menu=$1&news=$2 [L,QSA] 但通常情况下,这种方式不起作用。有什么可能的方法来实现这一点吗 编辑: 当前完全重写规则: RewriteEngine
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2 [L,QSA]
有时它会是位置
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?menu=$1&news=$2 [L,QSA]
但通常情况下,这种方式不起作用。有什么可能的方法来实现这一点吗
编辑:
当前完全重写规则:
RewriteEngine on
ErrorDocument 404 /error
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([\w-]+)/?$ index.php?menu=$1 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?menu=$1&news=$2 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2&news=$3 [L,QSA]
为了进一步阐述我的意见,您可以制定如下规则:
ErrorDocument 404 /error
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([\w-]+)/?$ index.php?menu=$1 [L,QSA]
RewriteRule ^([\w-]+)/n-([\w-]+)/?$ index.php?menu=$1&news=$2 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2&news=$3 [L,QSA]
现在,您的新闻链接应该是这样的:
http://domain.com/main-menu/n-sports
考虑您的正则表达式开始匹配\w
,它代表“单词字符”,通常是[A-Za-z0-9.]
。请注意包含下划线和数字。例如,这也意味着这与重音字符不匹配。请确保这与URL中每个路径开头的前导斜杠不匹配
您应该通过添加前导斜杠来更改重写:
RewriteRule ^/([\w-]+)/?$ index.php?menu=$1 [L,QSA]
RewriteRule ^/([\w-]+)/([\w-]+)/?$ index.php?menu=$1&news=$2 [L,QSA]
# RewriteRule ^/([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2 [L,QSA]
RewriteRule ^/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?menu=$1&submenu=$2&news=$3 [L,QSA]
我还评论了第三条规则,因为正则表达式与第二条规则相同。您的方法还有一个逻辑问题,因为这些行之间没有区别,所以无法调用
index.php?menu=$1&submenu=$2
您应该发布完整的重写规则列表。例如,有一个RewriteBase指令可能会改变整个行为。当然,它不会以这种方式工作。您需要将news
链接的前缀设置为:/main/n-top
=>/index.php?menu=main&news=top
您能更准确一点吗?这似乎正在工作。谢谢虽然我并不完全理解这个,但这个“n-”的作用是:)不客气n-
在您的新闻链接中作为前缀存在,这样您就不会有完全相同的匹配模式。