任何人都可以通过.htaccess
来帮助我吗?
我的网站上有一个文件夹系统:
用户
页
contact.php
products.php
的index.php
当有人来到我的网站example.com时,会显示index.php页面。我使用.htaccess
来获得干净的网址。
example.com/contact
必须包含/page/contact.php
到index.php。
example.com/user/username/profile
必须包含/user/profile.php
到user / index.php。
example.com/products/spinningbike将product.php包含在index.php中,并显示产品spinbike的详细信息。
这是我的.htaccess
文件:
RewriteEngine On
RewriteRule ^login /user/login.php [L]
RewriteRule ^user/(\w+)/?$ /user/index.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1
我总是在我的日志文件中收到这些php错误:
PHP警告:include():无法打开'page / user.php'以包含 (include_path ='。:/ usr / local / lib / php')in 第115行的/home/example.com/public_html/index.php,referer: http://www.example.com/user/wim/profile PHP警告: include(page / user.php):无法打开流:没有这样的文件或 第115行/home/example.com/public_html/index.php中的目录, referer:http://www.example.com/user/wim/profile
我认为[L]
无效。
答案 0 :(得分:0)
如此定义的htaccess,网址example.com/user/username/profile
将与最后一条规则匹配。因为第二条规则只匹配此格式的网址:example.com/user/[any word character]
word characters
为a-z
,A-Z
,0-9
,_
。
您必须更改第二条规则以匹配此网址
RewriteRule ^user/(\w+)/(\w+)/?$ /user/index.php?id=$1&page=$2 [L]
这样,网址example.com/user/username/profile
将被重写example.com/user/index.php?id=username&page=profile
答案 1 :(得分:-1)
首先,您当前的“文件夹系统”中不存在page/user.php
。
然后,即使它存在,如果您使用XAMPP,WAMP或MAMP之类的东西也可能无法工作,因为这些软件使用的默认根目录可能不是您的。
例如,在XAMPP中,此目录为C:\xampp\htdocs
,因此,如果您的项目位于此默认目录中的文件(例如myProject
)中,则查看项目呈现的URL将为{{ 1}}。
考虑到这一点,如果您重定向到127.0.0.1/myProject
,重定向网址将为/page/user.php
但是您要点击127.0.0.1/page/user.php
(C:\ xampp \ htdocs \ page \ user.php不存在,所以生成异常)
在XAMPP中,要更改Apache Web服务器的默认根目录,必须编辑以下行:
127.0.0.1/myProject/page/user.php
到
DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">
DocumentRoot "C:/xampp/htdocs/myProject"
<Directory "C:/xampp/htdocs/myProject">
中的