我已经准备好了一个项目..现在客户想要重写整个网址... ie(www.mydomain / page.php)到www.mydomain / page等...
文件夹中有多个页面大约10-15 ..我们是否有可能使用.htaccess在给定的镜头中重写这些页面的整个URL?
这些页面的链接还带有“.php”和“.html”扩展名,以便导航到其他页面。 现在我应该手动删除所有这些扩展,还是可以通过其他方式更改它(例如; .htaccess) 感谢
答案 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