0

你好这是我的htaccess:

RewriteRule ^[a-zA-Z]*$ /index.php?a=profile&u=$1 [L]

RewriteRule ^([a-zA-Z0-9_-]+)/home$ /index.php?u=$1 [L]


RewriteRule ^([a-zA-Z0-9_-]+)/blog$ /blog.php?u=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/contact$ /contact.php?u=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/portfolio$ /portfolio.php?u=$1 [L]

RewriteRule ^([a-zA-Z0-9_-]+)/page_([a-zA-Z0-9_-]+)$  /page.php?id=$2&u=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/post_([a-zA-Z0-9_-]+)$ /post.php?id=$2&u=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/blog_([a-zA-Z0-9_-]+)$ /blog.php?id=$2&u=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/project_([a-zA-Z0-9_-]+)$ /project.php?id=$2&u=$1 [L]

除了第一条线外,所有线都有效,我想我可能需要使用条件?例如,如果有人访问 site.com/john,这就是我试图做的事情,/index.php?a=profile&u=$1在这种情况下,他们将被发送到 username=john 的配置文件。但发生的事情是它让我回到 index.php

4

1 回答 1

1

我认为你应该删除[L]

RewriteRule ^([a-zA-Z]*)$ /index.php?a=profile&u=$1

[L] 标志导致 mod_rewrite 停止处理规则集。在大多数情况下,这意味着如果规则匹配,则不会处理更多规则。这对应于 Perl 中的最后一条命令,或 C 中的 break 命令。使用此标志指示应立即应用当前规则而不考虑进一步的规则。

于 2013-07-28T13:43:07.270 回答