概念 - 基于URL路径提供动态内容?

时间:2013-04-10 23:24:23

标签: php javascript

例如,

用户输入,

www.foob.com/some_path

我不想为用户可能使用的每个不同标识符实际拥有some_path文件夹...例如,如果它是一个人的名字,就像许多社交应用程序中所见。

www.foob.com/some_path1

但是,我想将其作为变量阅读并提供相关内容

的JavaScript

var foo = 'some_path1'

PHP

$foo = 'some_path1';

如何将'some_path1'变成foo?

注意

some_path是一个变量,它可能包含

some_path_1
some_path_2
some_path_3

澄清

所以拿facebook.com

如果你去

www.facebook.com/your_name

并不是所有10亿用户都有不同的目录。

使用用户特定数据填充通用页面。

如何获取id your_name?

3 个答案:

答案 0 :(得分:2)

您需要设置www.foob.com/some_path以指向.htaccess文件中包含index.php?q=some_path或类似内容的PHP脚本网址:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-z\-]+)$ index.php?q=$1

然后,只需在PHP文件中基于$_GET['q']提供不同的内容。

或在Javascript中使用它:

echo '<script>...var q = ' . $_GET['q'] . ';</script>';

答案 1 :(得分:2)

您可以使用$_SERVER['REQUEST_URI']通过PHP获取此信息。如果您想在JavaScript中使用它,请查看window.location对象(可能是window.location.hrefwindow.location.pathname)。两者可能都需要一些解析才能抓住你想要的部分。

关于将这些请求发送到您的脚本的重写规则,我会使用类似这样的内容,它会重定向所有通过app.php找不到的文件请求。这应该放在您网站根目录下的.htaccess文件中。

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

答案 2 :(得分:1)

.htaccess文件添加到根目录。

的.htaccess

RewriteEngine On

RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1   [L]

您可以在index.php页面的顶部添加类似的内容:

<html>
  <head>
    <title> MyWebsite <?php echo '~'.ucwords($desired_page); ?> </title>
    <?php
        $page_array = array(
          "home", "blog", "news",
          "links", "about", "contact"
        );

        $desired_page = (isset($_REQUEST['page'])) ? 
          $_REQUEST['page'] : "home";

        if(!in_array($desired_page, $page_array))
          $desired_page = "error";
    ?>
  </head>
  <body>
      <div id="menu">
        <ul>
          <li <?php if($desired_page=="home")
              echo("class=\"current\""); ?>>
            <a href="home">Home</a></li>
          <li <?php if($desired_page=="blog")
              echo("class=\"current\""); ?>>
            <a href="blog">Blog</a></li>
          <li <?php if($desired_page=="news")
              echo("class=\"current\""); ?>>
            <a href="news">News</a></li>
          <li <?php if($desired_page=="links")
              echo("class=\"current\""); ?>>
            <a href="links">Links</a></li>
          <li <?php if($desired_page=="about")
              echo("class=\"current\""); ?>>
            <a href="about">About Us</a></li>
          <li <?php if($desired_page=="contact")
              echo("class=\"current\""); ?>>
            <a href="contact">Contact Us</a></li>
        </ul>
      </div><!--end menu-->

      <div id="content">
        <?php
          /*Includes specific page content*/
          include("content/".$desired_page.".php");
        ?>
      </div> <!-- end #content -->
  </body>
</html>