.htaccess多个url重写

时间:2013-07-29 17:00:12

标签: php .htaccess

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

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

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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将像路由器一样。

答案 2 :(得分:1)

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

Options +MultiViews