fre*_*ill 6 .htaccess mod-rewrite redirect
我不想问这个问题,因为它被问了一百万次,但答案似乎永远不会令人满意,大多数线程似乎都被抛弃而没有一个公认的答案.
这正是我需要做的事情(由于低业力,坏网址是故意的):
http://example.com/file.php 重定向到 http://example.com/file/
http://example.com/file 还必须重定向到 http://example.com/file/
http://example.com/asdfsadf并且http://examplecom/file/asdfasdf必须转到404页面
这是我在这里和其他地方的帖子拼凑而成的htaccess魔法.它似乎有效(与主题中大多数被遗弃的线程不同,总有一些奇怪的行为).
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php http://example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
就像我说的,据我所知,即使对于子目录,这也可以正常工作.任何知识渊博的人都可以告诉我,如果我错过了什么.可以改进还是缩短?
为了它的价值,我也删除了www:
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常.它包含在其他部分之后.这是最好的订单吗?
谢谢大家,我希望我们能够得到一个好的,可靠的答案,因为有很多不好的答案.
哦,这个问题我有答案了!.htaccess 中的这个小重写片段将从您在其 url 中指定的任何文件中删除扩展名。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteBase /
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://yourdomain.com/$1/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
只需将其粘贴到根目录中 .htaccess 文件的底部即可。该文件是隐藏的,因此请确保您的 ftp 中启用了“显示隐藏文件”。ETA:最后 3 行应在 yourcommain.com 上的所有文件中添加尾部斜杠,不要忘记正确替换 youdomain.com。
这将从您的所有 php 文件的 url 中删除“.php”!^_^ 希望有帮助
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |