【发布时间】:2016-04-06 18:31:57
【问题描述】:
我用过这段代码
## remove the php extention
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
这适用于某些文件,例如example.com/contact,但当我有一个也是目录的.php 文件时不起作用。例如,在根文件夹中:
science.php
science - folder
文章属于类别,例如http://example.com/science/themost-blabla.php - 这行得通,.php 扩展不会出现在 URL 中。
所以我想知道是否有可能隐藏 .php 扩展至 science.php,因为当我输入 example.com/science 时……它会将我重定向到科学文件夹的内容……
/science 目录的索引:
afla-care-a-fost-primul-meci-televizat-de-fotbal-din-lume-1937-arsenal.phpcazinoul-din-constanta.php cele-7-minuni-ale-lumii.phpdescoperire-colosala-a-epavei-navei-spaniole-san-jose-ce-avea-la-bord-o-avere-impresionanta.phpimagini/ mitologia-greaca.php poenaru.phptop-10-cele-mai-importante-inventii-romanesti-din-istorie.phptop-5-enigme-ale-lumii.php turnul-eiffel.php
那么,我可以做些什么来隐藏这个页面的扩展吗?还是我需要更改文件的名称 - 不是文件夹?
【问题讨论】:
-
如果存在与文件同名的文件夹,则无法将url重写为文件。资源需要是唯一可识别的,如果您删除扩展名,情况就不再如此了。
-
你可以将文件移动到science文件夹中并命名为index.php,这个解决方案也不需要url重写。
-
@CharlotteDunois “如果存在与文件同名的文件夹,则无法将 url 重写为文件。” - 嗯,你可以。 “文件夹”包含尾部斜杠,而文件不包含斜杠。但是,为了避免冲突,您需要设置
DirectorySlash Off。 -
@w3dk 这样做会降低您的搜索引擎排名,因为带有和不带有斜杠的页面应该是相同的内容(最好将 301 从一个重定向到另一个以避免得到双重结果)。使用和不使用斜杠提供两种不同的结果是不好的做法,只会带来混乱。它还表明,如果您认为这是解决“问题”的方法,那么您作为开发人员的想法并不多。