使用.htaccess删除.php扩展名

使用.htaccess删除.php扩展名

是的,我已阅读Apache手册并在此搜索。出于某种原因,我根本无法让这个工作。我最接近的是删除扩展名,但它指向根目录。我希望这只是在包含该.htaccess文件的目录中工作。

我需要对.htaccess文件做三件事。

  1. 我需要它来删除.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>?

  1. 我希望它在每个URL之前强制使用“www”,所以它不是domain.com,但是www.domain.com/page

  2. 我想从页面中删除所有尾部斜杠。

我会继续寻找,尝试等等。会在子目录中导致任何问题吗?


慕码人8056858
浏览 733回答 3
3回答

一只名叫tom的猫

Gumbo在Stack Overflow问题中的答案如何使用Apache mod_rewrite隐藏.html扩展名应该可以正常工作。重新1)将.html更改为.php重新a。)是的,这是可能的,只需添加#tab到URL。Re b。)可以使用QSA(Query String Append),见下文。这应该也适用于子目录路径:RewriteCond&nbsp;%{REQUEST_FILENAME}.php&nbsp;-fRewriteRule&nbsp;!.*\.php$&nbsp;%{REQUEST_FILENAME}.php&nbsp;[QSA,L]

qq_遁去的一_1

除了上面的其他答案,您也可以尝试从文件中完全删除.php扩展名,并避免无限循环:RewriteEngine&nbsp;OnRewriteBase&nbsp;/RewriteCond&nbsp;%{THE_REQUEST}&nbsp;^[A-Z]{3,}\s([^.]+)\.php&nbsp;[NC]RewriteRule&nbsp;^&nbsp;%1 &nbsp;[R=301,L]RewriteCond&nbsp;%{REQUEST_FILENAME}&nbsp;!-dRewriteCond&nbsp;%{REQUEST_FILENAME}.php&nbsp;-fRewriteRule&nbsp;^(.*?)/?$&nbsp;$1.php&nbsp;[NC,L]此代码将在Root / .htaccess中运行,如果要将其放在子目录中的htaccess文件中,请务必更改RewriteBase。编辑:在apache 2.4及更高版本中,您还可以使用END标志来防止无限循环错误。以下示例与apache 2.4上的相同,RewriteEngine&nbsp;onRewriteRule&nbsp;^(.+)\.php$&nbsp;/$1&nbsp;[R,L]RewriteCond&nbsp;%{REQUEST_FILENAME}.php&nbsp;-fRewriteRule&nbsp;^(.*?)/?$&nbsp;/$1.php&nbsp;[NC,END]
打开App,查看更多内容
随时随地看视频慕课网APP