我正在尝试为网站中的所有网页制作漂亮的链接,
我希望foo.com/services/domestic
转到foo.com/index.php?page=services-domestic
。我在.htaccess文件中有以下内容,它适用于上面的示例,但如果我尝试转到foo.com/services/domestic/case/1
(期待/index.php?page=services-domestic-case-1
),我会得到404。
# a/b/c/d -> a-b-c-d
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9_-]+)$ $1-$2 [N]
# a-b-c-d -> index.php?page=a-b-c-d
RewriteRule ^([^(/|\.)]+)$ index.php?page=$1
我试过在没有标志的情况下重复[N]
行三次无效。除了第一个深度之外,它不适用于任何其他方面。可能只是我的业余正则表达式,但我无法理解什么是破坏,任何想法?
答案 0 :(得分:0)
试试这个:
RewriteRule ^([\w-]+)/([\w-]+)$ $1-$2 [N]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?page=$1
答案 1 :(得分:0)
看起来你只需要调整你的正则表达式并重写标志:
# a/b/c/d -> a-b-c-d
RewriteRule ^(.*)/(.*) /$1-$2 [L]
# a-b-c-d -> index.php?page=a-b-c-d
RewriteRule ^([^/.]+)$ /index.php?page=$1 [L]