几个星期前,我在共享主机上尝试重写网址。它工作了一段时间,但现在似乎已经破产了。我不知道问题是什么,我自己也无法解决。伙计们,希望你能帮忙。
这是计划。我想将网址中的扩展程序(例如' file.html'或' file.php')删除为仅文件名(例如'文件')。我的代码如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index/(.*)/$ index.php?page=$1
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
ErrorDocument 404 404.php
ErrorDocument 403 403.php
ErrorDocument 401 401.php
</IfModule>
一个扩展说明:此.htcaccess文件位于目录&#39;投资组合中。根有另一个.htcaccess文件,如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
也许这是显而易见的事情,但我无法找到问题所在。我确实试过了RewriteBase / website /&#39;,&#39; RewriteBase /&#39;,&#39; RewriteCond%{REQUEST_FILENAME}!-f&#39;和&#39; RewriteCond%{REQUEST_FILENAME}!-d&#39;在第一个.htaccess文件中,但这不起作用。
答案 0 :(得分:1)
您可以在/portfolio/.htaccess
ErrorDocument 404 404.php
ErrorDocument 403 403.php
ErrorDocument 401 401.php
RewriteEngine On
RewriteBase /portfolio/
RewriteRule ^index/(.+?)/$ index.php?page=$1 [L,QSA]
RewriteCond %{DOCUMENT_ROOT}/portfolio/$1\.html -f [NC]
RewriteRule ^([^.]+)$ $1.html [L]
RewriteRule ^([^.]+)$ $1.php [L]
添加.php
或.html
的规则需要RewriteCond
来检查portfolio
目录中是否存在相应的文件。