【问题标题】:URL rewrite(SLUG) and URL redirection (htaccess)URL 重写 (SLUG) 和 URL 重定向 (htaccess)
【发布时间】:2015-07-28 14:15:08
【问题描述】:

下面是我的 php 代码(qs.php)。此文件包含 url 链接。使用 SLUG 创建的漂亮链接。

<html>
<head></head>
<body>
    <?php
    function create_slug($string){
       $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
       $slug = strtolower($slug);
       return $slug;
    }
    $slugurl=  create_slug('SLUG-text-testing-purpose-only');

    $file = 'qs1'; //this is a php file qs1.php
    $id = '12345678'; //testing ID
    $complete_url = $file."/".$id."/".$slugurl;

    ?>
    <a href ="<?php echo $full;?>"> This is a test link created by slug</a>

</body></html>

上面的链接看起来像这样 - http://localhost/qs/qs1/12345678/slug-text-testing-purpose-only

编辑

QS 是放置所有文件的目录。 QS1是一个php文件(qs1.php)

我想从上面的链接12345678 &amp; slug-text-testing-purpose-only 获取两个变量。 因为 qs1.php 是我从 $_GET['var1'] &amp; $_GET['var2']; 获取这两个变量的文件

我知道.htaccess可以实现。我尝试了多种选择,但由于我得到 ​​404,它们都不起作用。

.htaccess 文件放在 QS 目录下。

以下是我尝试过的选项。

RewriteEngine On
    RewriteRule ^qs/([0-9]+)/([^/]+)$ qs1.php?var1=$1&var2=$2 [L]

    RewriteRule ^/([^/]*)/([^/]*)$ /qs1.php?var1=$1&var2=$2 [L]

    RewriteRule  ^qs/([^/]+)/([^/]+)/?$ /qs1.php?var1=$1&var2=$2  [QSA,L]
    RewriteRule /qs/(\d+)/(.*) qs1.php?id=$1&slug=$2    [QSA,L]

我对 htaccess 和 url 重定向非常陌生。

请指教。

谢谢

【问题讨论】:

  • qs1/是目录吗?
  • 不,它是一个 php 文件 qs1.php。

标签: php apache .htaccess mod-rewrite redirect


【解决方案1】:

你可以把这段代码放在/qs/.htaccess

RewriteEngine On
RewriteBase /qs/

RewriteRule ^([^/]+)/(\d+)/([^/]+)$ $1.php?var1=$2&var2=$3 [NC,L]

现在,你可以去http://localhost/qs/qs1/12345678/slug-text-testing-purpose-only,你会得到和/qs/qs1.php?var1=12345678&amp;var2=slug-text-testing-purpose-only一样的内容

【讨论】:

  • 我试过上面的代码,但问题还是一样。只是出于好奇 $1.php 在上述规则中是正确的。我没听懂。
  • 您能说得更具体些吗?什么不起作用?你得到了什么?
  • 抱歉,我的错误,我没有看到qs1.php(和其他人)在/qs/ 文件夹中。您可以尝试使用我编辑的代码(别忘了:/qs/ 文件夹中的 htaccess)
  • localhost/… 这不起作用,因为 qs1.php 和 htaccess 文件位于 qs 目录下。
  • 这也是同样的逻辑。您所要做的就是在路径中包含子文件夹。例如:/subfolder1/subfolder2/css/main.css(或带有基本标签:&lt;base href="/subfolder1/subfolder2/"&gt;
【解决方案2】:
RewriteEngine On
RewriteRule    ^qs/qs1/(\d+)/(.+)$    qs1.php?var1=$1&var2=$2    [NC,L]

你可以在这里玩:http://htaccess.madewithlove.be

【讨论】:

  • 您的 mode_rewrite 可能未启用或服务器忽略 .htaccess。阿帕奇?
  • 对于 Apache,请确保 目录AllowOverride All + 运行 a2enmod rewrite
  • 它已启用,我试图将垃圾值放入 htaccess 文件中,但它给了我 500 错误。无论如何,我有一个 WAMP 服务器。请让我知道如何启用 htaccess。
  • 好吧,如果当您在 htaccess 文件中进行更改时它显示 500,那么您已经有了这个 AllowOverride All。你能展示你的整个 .htaccess 吗?
  • 有问题。我放那个。 htaccess 文件中没有其他内容。
猜你喜欢
  • 1970-01-01
  • 2015-05-21
  • 2016-09-28
  • 2013-01-27
  • 1970-01-01
  • 2013-09-04
  • 2017-06-16
  • 2021-10-06
  • 2013-12-21
相关资源
最近更新 更多