我使用了这段代码
## 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
排名不会出现在网址中。
所以我想知道是否有可能将.php
扩展名隐藏到science.php
,因为当我输入example.com/science
时...它会将我重定向到科学文件夹的内容。 ...
/science
目录的索引:
afla-care-a-fost-primul-meci-televizat-de-fotbal-din-lume-1937-arsenal.php
cazinoul-din-constanta.php cele-7-minuni-ale-lumii.php
descoperire-colosala-a-epavei-navei-spaniole-san-jose-ce-avea-la-bord-o-avere-impresionanta.php
imagini/ mitologia-greaca.php poenaru.php
top-10-cele-mai-importante-inventii-romanesti-din-istorie.php
top-5-enigme-ale-lumii.php turnul-eiffel.php
那么,我可以做些什么来隐藏此页面的扩展名吗?或者我是否需要更改文件的名称 - 不是某些文件夹?
答案 0 :(得分:0)
试试这个
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
答案 1 :(得分:0)
其中一个"问题"是mod_dir会尝试"修复"通过在URL的末尾附加斜杠来访问目录时的URL。但是,这可以被禁用。
# Prevent mod_dir from automatically appending slashes to directories
DirectorySlash Off
# Disable directory listings
# In cases where there is a directory with no similar .php file and no DirectoryIndex
Options -Indexes
# If a PHP file exists for the requested URL then rewrite to this
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule (.*) $1.php [L]
如果需要,可以通过向URL明确附加斜杠来访问裸目录(或更确切地说,DirectoryIndex
)。例如。 example.com/science/
。然而,这可能是不必要的(并且可能最好避免以避免用户混淆),因为我假设example.com/science
(没有尾随斜杠,即science.php
)返回你的"科学" 类别内容。如果没有DirectoryIndex
文档,example.com/science/
将只返回403 Forbidden。或者,您可以使用外部重定向从这些URL中显式删除尾部斜杠。