1

我已经通过配置我的 .htaccess 文件成功删除了 .php 文件扩展名,我的问题是当用户在 URL 上键入 .php 时,我希望用户被重定向,以防他们在 URL 上键入 .php。例如,我的原始网址是

http://mysite.com/home

有时,用户会这样输入 http://mysite.com/home.php,所以在这种情况下,我想将它们重定向到没有 .php 的 url,所以应该是http://mysite.com/home

另一个例子是如果一个 URL 有一个参数,例如:

http://mysite.com/home.php?id=1&uid=100

我希望将用户重定向到http://mysite.com/home?id=1&uid=100

任何想法如何做到这一点?您的帮助将不胜感激和奖励!谢谢 :)

4

3 回答 3

2

您需要匹配实际请求而不是 URI,因为您的其他规则正在重写 URI。所以是这样的:

RewriteCond %{THE_REQUEST} \ /(.+)\.php(\?|\ |$)
RewriteRule ^ /%1 [L,R=301]

因此,如果有人键入:http://mysite.com/some/path/home.php,浏览器将被重定向(从而更改地址栏中的 URL)为http://mysite.com/some/path/home.

如果您只想对文档根目录中的 php 文件执行此操作(例如/home.php,而不是 /some/path/to/home.php),请调整正则表达式:

RewriteCond %{THE_REQUEST} \ /([^/]+)\.php(\?|\ |$)
RewriteRule ^ /%1 [L,R=301]
于 2013-01-04T02:08:17.180 回答
0

使用.htaccess. 这是我目前在我的网站上使用的一些代码,它们替换/page.php/page/

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^(.*)\/$ $1.php [NC]

把它放在一个名为的文件中.htaccess- 没有名称,在这种情况下,“扩展名”就是文件本身。保存并上传到您的public_html文件夹中的服务器。或者无论您的基本/公共目录是什么。

此代码中的最后一行对您有帮助,它会将任何以 file 结尾的.php文件替换为以 a结尾的文件/,如上所述。第 2 行和第 3 行转发http://domain.comhttp://www.domain.com. 我不了解你,但我认为这样看起来更好。

于 2013-01-04T02:06:39.520 回答
0

在文件顶部尝试这样的操作:

if (strpos($_SERVER['REQUEST_URI'],'.php')!==false){
$good_path = str_replace($_SERVER['REQUEST_URI'],'.php','');
header('Location: '.$good_path);
}

最好使用正则表达式来检查扩展名,但这是一个快速示例,仅用于帮助您入门。

于 2013-01-04T02:12:08.143 回答