我可以使用 mysite.com/username 访问个人资料,但我无法访问 mysite.com/home ,原来是 mysite.com/index.php? TAB1 =家
与所有其他网页相同的问题,例如,我也无法访问 mysite.com/messages ,其原来是 mysite.com/index.php?tab1=messages
我想使用相同的链接访问配置文件和页面。 mysite.com/profile &的 mysite.com/page
这是我使用的htaccess代码。
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\/\/]*)$ index.php?tab1=profile&id=$1 [NC]
RewriteRule ^([^\/\/]*)/([^\/\/]*)(|\/)$ index.php?tab1=profile&tab2=$2&id=$1 [NC]
RewriteRule ^([^\/\/]*)/([^\/\/]*)/([^\/\/]*)(|/)$ index.php?tab1=profile&tab2=$2&tab3=$3&id=$1 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\/\/]*)$ index.php?tab1=$1 [NC]
答案 0 :(得分:0)
你有这个规则:
RewriteRule ^([^\/\/]*)$ index.php?tab1=profile&id=$1 [NC]
哪个模式为^([^\/\/]*)$
。所以这匹配"用户名","家庭", AND "消息"。这就是为什么总是进入个人资料的原因,因为该规则不加区分地匹配所有内容而没有/
。
因此,具有相同模式的最后一条规则永远不会匹配任何内容。您需要将配置文件设置为不同的模式,或者对#34; home"的匹配进行硬编码。和"消息"以及其他没有进入个人资料的内容。
类似于:
RewriteEngine on
RewriteRule ^(home|messages)$ index.php?tab1=$1 [L]
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\/\/]*)$ index.php?tab1=profile&id=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\/\/]*)/([^\/\/]*)(|\/)$ index.php?tab1=profile&tab2=$2&id=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\/\/]*)/([^\/\/]*)/([^\/\/]*)(|/)$ index.php?tab1=profile&tab2=$2&tab3=$3&id=$1 [NC,L]
或者类似的东西可能吗?
RewriteEngine on
RewriteRule ^profile-([^\/\/]*)$ index.php?tab1=profile&id=$1 [NC]
RewriteRule ^profile-([^\/\/]*)/([^\/\/]*)(|\/)$ index.php?tab1=profile&tab2=$2&id=$1 [NC]
RewriteRule ^profile-([^\/\/]*)/([^\/\/]*)/([^\/\/]*)(|/)$ index.php?tab1=profile&tab2=$2&tab3=$3&id=$1 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\/\/]*)$ index.php?tab1=$1 [NC]
使用户个人资料看起来像:mysite.com/profile-username