2

我已经准备好一个项目..现在客户想要重写整个 url...ie(www.mydomain/page.php) 到 www.mydomain/page 等...

文件夹中有多个页面。说大约 10-15 ..我们有没有可能使用 .htaccess 在给定的镜头重写这些页面的整个 url?

此外,这些页面的链接带有“.php”和“.html”扩展名,以便导航到其他页面。现在我应该手动删除所有这些扩展名还是可以通过其他方式更改它(例如;.htaccess)谢谢

4

3 回答 3

3

你需要添加一些东西来知道它是 PHP 还是 HTML,比如

all .php files becomes www.mydomain.com/p/page
and .html files become www.mydomain.com/h/page

(这将需要另一组 htaccess 规则而不是下面的规则)

或者您可以将所有 .html 文件更改为 .php ,这样会更容易..
您现在可以让所有文件隐藏它们的 .php 扩展名,例如

www.mydomain.com/page.php becomes www.mydomain.com/page

为此,在您的 .htaccess 中放置:

RewriteEngine On

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

经过一些研究,我编辑了我的答案,因为您需要将 301 重定向从旧链接添加回新链接,因此上面的代码现在应该可以工作。归功于这里的答案:Redirect .php urls to urls without extension

于 2013-07-29T17:50:51.760 回答
1

您可以在.htaccess文件中使用类似的内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

这样,您可以使用以下网址:

mydomain.com/page

或者

mydomain.com/page/test

但请注意,所有请求都将被移至路由器,index.php因此index.php就像路由器一样。

于 2013-07-29T17:04:00.030 回答
1

在你的根 .htaccess 中尝试这个 Apache 提供的功能:

Options +MultiViews
于 2013-07-29T18:43:02.500 回答