我正在为客户编辑一个网站,并且遇到了一些障碍。我可以编辑和发布现有页面,但如果我要创建新的.php
或.html
页面并尝试在线查看,我会收到404错误页面。我可以使用我想要的新页面并重命名它以覆盖现有页面,所有内容都可以正常加载。
我已经尝试了一些不同的方法来执行我需要的规则,但是他们要么尝试在根目录中找到页面(当它实际上在/application/views/
中);或者它有效,我遇到了和以前一样的问题。
我需要帮助制作一个新的.htaccess
文件,您可以转到website.com/signup
,然后转到/application/views/signup.php
。以下是我迄今为止尝试过的一些例子。
原始.htaccess
:
RewriteEngine on
RewriteCond $1
!^(index\.php|images|css|js|uploads|db|fonts|blogger|support|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
具有相同问题的另一个版本。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php/$1 [L]
最后,一个允许查看新页面但在根文件夹中查找它们的版本。例如。在此服务器上找不到请求的URL /signup.php
。我想如果修改它会起作用,但我没有使用.htaccess
规则的经验。非常感谢任何可以帮助我和未来浏览器的人!
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteRule ^([^\.]+)$ $1.htm [NC,L]
答案 0 :(得分:1)
您应该能够在原始 RewriteCond
文件规则中添加几个条件(.htaccess
指令):
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|uploads|db|fonts|blogger|support|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
因此,只有当请求没有映射到实际文件或目录时才会被重写(到前端控制器)。