1

我是 .htaccess 的新手,我尝试用谷歌搜索我在 .htaccess 上遇到的所有问题以了解。我找到了一些教程,但我什么都不懂。

第一个问题: .htaccess 的输入 url 和输出 url 有什么区别


第二个问题:

PHP,在我的索引页面中

header('Location:http://example.com/index.php?p=test&c=math&t=geometry&id=100');

我想要的浏览器网址是

http://example.com/test/math/geometry/100

并使用 htaccess 我想将以下 url 返回到 php

http://example.com/index.php?p=test&c=math&t=geometry&id=100

第三个问题:

如果以某种方式,以上是可能的,我怎么能在 php 中,在索引页面中做到这一点

header('Location:http://example.com/index.php?p=test&t=geometry&id=100');

使用 .htaccess 我想在 url 上获取以下代码

http://example.com/test/geometry/100

和 php 应该从 .htaccess 获取下面的代码

http://example.com/index.php?p=test&t=geometry&id=100

第四个问题: 请帮助我,我也找到了以下解决方案,但我无法理解以下代码中发生了什么。

RewriteEngine on
DirectoryIndex index.php

# REDIRECT Force requests for named index files to drop the index file filename, and force non-www to avoid redirect loop
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.(html?|php[45]?)(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]*/)*)index\.(html?|php[45]?)$ http://example.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/([^\.]+)\.php\ HTTP/
RewriteRule ^([a-zA-Z0-9_-]+)/([^.]+)\.php$ http://example.com/$1/$2 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/([^/]+)/([^\.]+)\.php\ HTTP/
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([^.]+)\.php$ http://example.com/$1/$2/$3 [R=301,L]

# REDIRECT www to non-wwww
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule .? http://example.com%{REQUEST_URI} [R=301,L]

# REWRITE url to filepath
RewriteRule ^([a-zA-Z0-9_-]+)/([^/.]+)$ /$1/$2.php [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([^/.]+)$ /$1/$2/$3.php [L]

提前致谢

4

0 回答 0