use*_*919 4 apache .htaccess mod-rewrite
我通过搜索,复制和粘贴等过去一小时制作了这个.htaccess文件.
它确实有用,我想要它.
但是我不明白.
有人可以一步一步地把它放在外行人的条件下发生的事情.
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
如果有任何提示,请将它们扔进去.
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)
^www\.example\.com$锚^$意味着这是完整的字符串HTTP_HOST,之前或之后都没有.因此,如果与请求一起传递的域名www.example.com 完全匹配,则整个URI (.*)将重定向到example.com,从而www.从前端剥离.
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]
Run Code Online (Sandbox Code Playgroud)
一个-f标志RewriteCond测试,如果第一个参数是实际存在的文件.在这种情况下,它通过在测试参数上添加扩展来测试值的值REQUEST_FILENAME,该值将是作为PHP文件存在file的URI 的最后一部分().example.com/directory/file.php
因此,如果file.php实际存在,那么对不存在的请求将在file此处静默重写到其对应的PHP文件中$1.php.因此,如果/directory/notexists没有相应的directory/notexists.php文件,则不会被重写.
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)
THE_REQUEST包含GET/POST浏览器最初发送的完整请求,如GET /index.php.所以这里匹配的内容类似于前一个块.
^[A-Z]{3,9}首先匹配动词GET或POST等,但不捕获它以供重复使用/([^\ ]+)随后捕捉跟一切/,并到下一个空格,就像index在GET /index.php.\.php字面匹配好的,然后下面的内容RewriteRule采用上述条件index捕获%1,并实际重定向浏览器以删除.php扩展名,以便浏览器的结束URL看起来像/index.
换句话说,如果浏览器请求/directory/file.php与.php扩展,将用户重定向到/directory/file以汽提.php.
RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
这个匹配/index原始请求中包含的任何内容,但它不必位于URI的开头.换句话说,/directory/index会匹配,就像那样/directory/subdir/index.php.无论它匹配什么,它都会被重定向到索引部分之前的任何内容.让我们分解一下:
^(.*) 匹配开头的任何内容 $1index.php ..来自上面匹配的任何东西然后将其重定向到$1组件,因此,/directory/subdir/index.php如果浏览器直接请求的URL 将被重定向到指向更干净的URL:/directory/subdir/没有index.php出现在地址栏中.
| 归档时间: |
|
| 查看次数: |
3597 次 |
| 最近记录: |