.Htaccess重写文件阻止查看新网页,404错误

时间:2017-04-15 20:03:31

标签: php .htaccess mod-rewrite

我正在为客户编辑一个网站,并且遇到了一些障碍。我可以编辑和发布现有页面,但如果我要创建新的.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]

1 个答案:

答案 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]

因此,只有当请求没有映射到实际文件或目录时才会被重写(到前端控制器)。