使用.htaccess删除.php扩展名是的,我已阅读Apache手册并在此搜索。出于某种原因,我根本无法让这个工作。我最接近的是删除扩展名,但它指向根目录。我希望这只是在包含该.htaccess文件的目录中工作。我需要对.htaccess文件做三件事。我需要它来删除.php一个。我有几个页面使用选项卡,URL看起来像page.php #tab - 这可能吗?湾 我有一个页面使用附加到URL的会话ID,以确保您来自正确的地方,www.domain.com/download-software.php?abcdefg。这可能吗?另外,在执行此操作时,是否需要从头文件导航包含文件中的链接中删除“.php”?应该IE "<a href="support.php">support</a>" be <a href="support">support</a>?我希望它在每个URL之前强制使用“www”,所以它不是domain.com,但是www.domain.com/page。我想从页面中删除所有尾部斜杠。我会继续寻找,尝试等等。会在子目录中导致任何问题吗?
3 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
Gumbo在Stack Overflow问题中的答案如何使用Apache mod_rewrite隐藏.html扩展名应该可以正常工作。
重新1)将.html更改为.php
重新a。)是的,这是可能的,只需添加#tab
到URL。
Re b。)可以使用QSA
(Query String Append),见下文。
这应该也适用于子目录路径:
RewriteCond %{REQUEST_FILENAME}.php -fRewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
除了上面的其他答案,
您也可以尝试从文件中完全删除.php扩展名,并避免无限循环:
RewriteEngine OnRewriteBase /RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]RewriteRule ^ %1 [R=301,L]RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME}.php -fRewriteRule ^(.*?)/?$ $1.php [NC,L]
此代码将在Root / .htaccess中运行,如果要将其放在子目录中的htaccess文件中,请务必更改RewriteBase。
编辑:
在apache 2.4及更高版本中,您还可以使用END标志来防止无限循环错误。以下示例与apache 2.4上的相同,
RewriteEngine onRewriteRule ^(.+)\.php$ /$1 [R,L]RewriteCond %{REQUEST_FILENAME}.php -fRewriteRule ^(.*?)/?$ /$1.php [NC,END]
- 3 回答
- 0 关注
- 732 浏览
添加回答
举报
0/150
提交
取消