如何在PHP中的域名后手动输入从地址栏输入的URL

时间:2016-01-05 11:17:39

标签: php html .htaccess

假设我的网站名称是www.example.com,这是用php编写的。 当我输入www.example.com时会显示页面。但是当我输入 www.example.com/content/somepage.html 时,它会说找不到404页面,因为它不存在是正确的。

现在,如果用户手动输入 www.example.com/content/somepage.html ,我不应该重定向到错误404页面,而是需要内容/某个页面。 html 这个值,我可以进一步处理它,这是我的要求。

通常index.php是第一个被调用的页面,有什么方法可以在 www.example.com

之后输入值

content / somepage.html 只是一个示例,但它可以是任何内容。那么在www.example.com之后我还需要获取它。

Sample Download Link

我正在使用wamp,这两个文件存在于www根文件夹

的index.php

<?php 

    echo 'The Uri is : '.$_SERVER['REQUEST_URI'];

    echo '<br /><br />';

    if(isset($_SERVER['path']))
        echo 'The parameter is : '.$_SERVER['path'];

?> 

.htaccess文件

DirectroyIndex index.php
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?path=$1 [QSA,L]

2 个答案:

答案 0 :(得分:0)

您可以在站点根目录中使用此规则.htaccess:

DirectroyIndex index.php
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?path=$1 [QSA,L]

这会在path中使用URI路径/index.php填充content/somepage.html个查询参数。

或者使用FallbackResource

FallbackResource index.php

并在$_SERVER['REQUEST_URI']中使用/index.php变量来获取原始URI。

答案 1 :(得分:0)

您正在谈论的可以通过.htaccess使用url routing来实现。

样品

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^content/(\d+)*$ ./index.php?id=$1

根据评论进行更新。

在最后一行你可以使用......

RewriteRule (.*) index.php?url=$1 [L,QSA]

index.php文件中,您应该能够将其余字符串作为$_GET['url'];