1

我正在尝试为网站中的所有页面制作漂亮的链接,我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]没有标志的情况下重复该行三遍,但无济于事。除了第一个深度之外,它对任何东西都不起作用。可能只是我的业余正则表达式,但我不明白发生了什么问题,有什么想法吗?

4

2 回答 2

0

试试这个 :

RewriteRule ^([\w-]+)/([\w-]+)$ $1-$2 [N]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?page=$1
于 2012-08-13T15:43:41.573 回答
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]
于 2012-08-13T17:47:50.010 回答