Cat*_*vei 8 .htaccess mod-rewrite
这是我的.htaccess文件的代码
Options -Indexes
RewriteEngine On
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^([a-z0-9]+)$ /profile.php?username=$1 [L]
RewriteRule ^([a-z0-9]+)$ /display.php?page=$1 [L]
Run Code Online (Sandbox Code Playgroud)
对于第一个它正常工作,并显示如下:
www.site.com/user
第二个不起作用,通常显示如下www.site.com/display.php?page=10.我想显示这样的页面www.site.com/article我尝试了不同的东西而没有结果.请告诉我如何使用多个规则.另外请给我一个关于如何在php中使用这些功能的建议,因为我觉得我做的事情并不是很好.我使用此规则的PHP代码是:
<p><a class="button" href="/<?php echo $user_data['username']; ?>"> Profile</a></p>
Run Code Online (Sandbox Code Playgroud)
它有效,但也许是一个更好的方式来建立一个利用htaccess的链接.
Jon*_*Lin 23
您遇到冲突的两个规则,使用的模式完全相同,这意味着,除了仅应用于第一个规则的条件之外,这两个规则完全无法区分.
鉴于此URL:
http://www.site.com/blah
Run Code Online (Sandbox Code Playgroud)
是" blah"页面还是用户?无法分辨,因为^([a-z0-9]+)$两个规则的正则表达式模式()匹配"blah".所以,无论如何,第一个都会被应用.您需要添加一些内容来区分2,例如在URL中包含"用户"或"页面":
http://www.site.com/user/blah
http://www.site.com/page/bleh
Run Code Online (Sandbox Code Playgroud)
你的规则看起来像:
Options -Indexes
RewriteEngine On
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^user/([a-z0-9]+)$ /profile.php?username=$1 [L]
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^page/([a-z0-9]+)$ /display.php?page=$1 [L]
Run Code Online (Sandbox Code Playgroud)
小智 6
Options -Indexes
RewriteEngine On
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^user/([a-z0-9]+)$ /profile.php?username=$1 [N]
RewriteRule ^page/([a-z0-9]+)$ /display.php?page=$1 [L]
Run Code Online (Sandbox Code Playgroud)
使用 [N](下一个)继续向相同条件添加规则,使用 [L](最后一个)来标识最后一个规则