.htaccess包含带有get变量的php文件

时间:2013-07-02 02:24:27

标签: php .htaccess

我正在尝试使用.htaccess来更改网址,并且还包含带有php的网页

old:http://website.com?page=test

新:http://website.com/test

<?php include 'pages/'. $_GET['page'] . '.php'; ?>

我不知道从哪里开始.htaccess但是任何帮助都会很棒,谢谢:]

2 个答案:

答案 0 :(得分:0)

<?php include 'pages/'. $_GET['page'] . '.php'; ?>
单独对黑客友好。您应该首先将选项限制为允许的文件。 即在内部点击/index.php并预设一系列有效选项。那说, 根据文件的数量,预设硬编码可能是您的最佳选择。

我相信你的意思是mod_rewrite。 http://httpd.apache.org/docs/current/rewrite/remapping.html

添加到/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^page=test$ [NC]
RewriteRule . /test [NC,L,R=301]
</IfModule>

或更具动态性

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^page=(.*)$ [NC]
RewriteRule . /%1/ [NC,L,R=301]
</IfModule>

我最好的建议是内部将所有内容发送到/index.php然后通过一些php解析/验证,发送到有效选项的开关()和安全默认值:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
</IfModule>

答案 1 :(得分:0)

试试这个,用户应该看到http://domain.com/thepage,服务器会将请求理解为http://domain.com/?page=thepage

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteRule ^([^/]*)$ ?page=$1 [NC,L]
</IfModule>