我创建了一个允许虚URL的.htaccess文件。但是,如果不输入索引文件,我将无法再键入www.website.com。即我必须输入www.website.com/index.php才能看到主页。这就是我的.htaccess文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC]
任何人都知道如何解决这个问题?谢谢大家!
答案 0 :(得分:4)
您定义规则的方式增加了复杂性。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
如果文件名是文件进程的目录,则上述规则表示。之后不再进行处理。
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC]
此规则表示将任何请求uri映射到profile.php?u=
现在,当您请求/
www.website.com
时,它会检查第一条规则并且无法匹配。然后检查第二条规则并将其映射到profile.php?u=
。
$_GET['u']
为空,则会检查*,/
为profile.php
。如果是,则加载index.php
。另一种方法是在找到用户名后找到适当的正则表达式。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(USERNAME_REGEX)$ http://www.website.com/profile.php?u=$1 [NC,L]
处理此问题的最佳方法是使用PHP,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?uri=$1 [L]
现在index.php
会让你通过的每一个人都可以。现在,您可以在index.php
。
答案 1 :(得分:2)
这可能是由于您的服务器设置。
试试DirectoryIndex index.php
(请参阅http://davidwalsh.name/directory-index-homepage-htaccess)
编辑(由于我没有在第一时间正确阅读问题)
你没试过RewriteRule吗?* - [L] line?