我几天都在挣扎。
文件夹结构是:
索引/文件/页/
在主文件夹(索引)中有 index.php - 这是整页中唯一的index.php文件。 在files文件夹中有php文件,实际上是网站的页面。 在文件夹中,还有几个文件夹(页面)包含不同的页面 - 我只是将php fiels分组到文件夹中以保持整洁。
我正试着解决这个问题。
现在无论我做什么,我都无法让这两条规则都起作用,无论是覆盖另一条规则还是什么都不起作用,我总是得到500条。
这是我的规则,实际上有效:
RewriteRule ^([-0-9a-z]+)$ pages/$1.php
- 这是方案2,没问题。
现在,当我添加处理直接访问php文件的规则时,之前的规则也会受到影响并被覆盖,所有内容都会抛出404,500等等。[L]等标志没有任何效果,也改变了顺序什么也没做。
另外,我想禁止直接访问 index.php 并重定向到索引文件夹(并显示清理网址)
这是我尝试过的一些额外规则,但没有结果。正如我之前所说,设置标志没有结果。
RewriteCond %{REQUEST_URI} ^.*\/pages\/.*\.php$
RewriteRule ^(.+)$ [R=404,L]
RewriteRule ^([-0-9a-z]+)$ pages/$1.php
RewriteCond %{REQUEST_URI} ^(.+)\/index\.php
RewriteRule ^(.*)$ index/ [R=301,L]
RewriteCond %{REQUEST_URI} ^\/(.*)\.php
RewriteRule ^(.*)$ [R=404,L]
感谢和问候
答案 0 :(得分:0)
请尝试以下规则:
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ index/ [L,R=302,NC,NE]
RewriteCond %{THE_REQUEST} \.php[\s?/] [NC]
RewriteRule ^ [F]
RewriteRule ^index/?$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]