我已经准备好一个项目..现在客户想要重写整个 url...ie(www.mydomain/page.php) 到 www.mydomain/page 等...
文件夹中有多个页面。说大约 10-15 ..我们有没有可能使用 .htaccess 在给定的镜头重写这些页面的整个 url?
此外,这些页面的链接带有“.php”和“.html”扩展名,以便导航到其他页面。现在我应该手动删除所有这些扩展名还是可以通过其他方式更改它(例如;.htaccess)谢谢
你需要添加一些东西来知道它是 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
您可以在.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
就像路由器一样。
在你的根 .htaccess 中尝试这个 Apache 提供的功能:
Options +MultiViews