使用php参数创建一个干净的URL

时间:2014-01-20 06:24:23

标签: php .htaccess

到目前为止,我已经让我的.htaccess让我删除了“.php”扩展名,但这对我来说还不够。我希望能够以example.com/asdfjK的形式访问example.com/test?id=asdfjK。所以它只接受URL中的主要php get参数(我不知道该怎么称呼它们。

到目前为止,这是我的.htaccess文件:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_]+)$ index.php?page=$1
RewriteRule ^([a-zA-Z0-9_]+)/$ index.php?page=$1
RewriteRule ^([a-zA-Z0-9_]+)$ /image.php?ID=$1
RewriteRule ^([a-zA-Z0-9_]+)/$ /image.php?ID=$1

2 个答案:

答案 0 :(得分:1)

无法区分发送到index.php的内容和发送到image.php的内容。模式是相同的,这意味着一切都将匹配第一个,没有任何东西将被路由到image.php。你必须在网址上添加一些内容,以便与之匹配。类似的东西:

http://example.com/image/abcdefg123456

这意味着htaccess文件看起来像:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?page=$1 [L,QSA]
RewriteRule ^image/([a-zA-Z0-9]+)/?$ image.php?page=$1 [L,QSA]

答案 1 :(得分:0)

问号后面的PHP参数称为“查询字符串”。

尝试这样的事情:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule ^([a-zA-Z0-9]+)$ /index.php?page=$1 [L]

这应该重定向来自:

http://example.com/abc123

要:

http://example.com/index.php?page=abc123

另见: