【问题标题】:Multiple URL rewrites with .htaccess使用 .htaccess 重写多个 URL
【发布时间】:2013-12-27 20:25:58
【问题描述】:

我的 .htaccess 文件中有以下代码,位于“root/mosaicin/”目录中。,

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /mosaicin/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^(download-sample-papers|album|results|testimonials)/([^/]+)/?$ /$1.php?url=$2 [NC,QSA,L]

我想将我的网址 www.domain.com/mosaicin/album.php/NID/ 重写为 domain.com/mosaicin/album/NID/ 规则中列出的其他页面相同(结果、推荐等)

我的 album.php 文件中的示例代码是这样的

<?php
$cid = NULL;
$url = new SimpleUrl('/mosaicin/');
if($url->segment(2) == FALSE)
    $cname = 'NID';
else
    $cname = $url->segment(2);
$cname = urldecode($cname);
$ccsql = "SELECT courseid,cname FROM courses WHERE cname='".$cname."'";
$csql = $obj->select($ccsql);
if(count($csql)>0)
$cid = $csql[0]['courseid'];
?>

获得 courseid 后,我的代码可以列出与特定课程相关的项目。 目前当我去页面 tplabs.in/mosaicin/album.php/NID 一切正常,但链接如下 tplabs.in/mosaicin/album/NID 它给出 404 错误。

请帮忙, 提前致谢。

【问题讨论】:

  • 哪些链接要转到/download.php,哪些链接要转到/gallery.php 您需要了解/anything 不能同时访问这两个脚本。
  • 其实我从 php url-rewrite 类中找到了这段代码,无法理解,但我猜它会将所有 url 重写为 downloads.php,但我现在想要的是重写以 downloads.php 开头的 url ?cid=1 到/1/download.php 和gallery.php?cid=1 到/1/gallery.php 请帮忙。谢谢。
  • 这个漂亮的 URL 方案会更好:/download/1/downloads.php?cid=1/gallery/1/gallery.php?cid=1 让我知道你是否同意,我会发布我的答案。跨度>
  • 是的,这也可以,请回复,谢谢
  • ok 在下面发布了答案。

标签: php apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

在您的 DOCUMENT_ROOT/.htaccess 文件中尝试这些规则:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /mosaicin/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^(download-sample-papers|album|results|testimonials)/([^/]+)/?$ $1.php?url=$2 [NC,QSA,L]

【讨论】:

  • 1.我错误地使用了download.php 而不是downloads.php(现已更正)和2.您需要将上面的代码放在DOCUMENT_ROOT/.htaccess 3.您的链接应该是http://domain.com/downloads/1
  • 我的 dir 结构为 root/mosaicin/,因此 .htaccess 文件位于 macixin 目录本身。我试图设置 RewriteBase,但它不起作用。我仍然必须使用带有 .php 扩展名的 URL,tplabs.in/mosaicin/album.php/NID 下面的 url 不起作用tplabs.in/mosaicin/album/NID
  • 当然可以,但我不知道/album/NID 是什么,因为我的回答只涉及/downloads/123/gallery/567 我只需要你想要的所有URL显示在您的网站上
  • 以前我只想显示 ID,但 Name 会更易读,更适合关键字 SEO。所以我将创建 NID 的链接,而不是 1,为 NATA 创建 2,依此类推。
  • 好的,但您能澄清并列出您想在您的网站上显示的所有 URL 以及它们的内部 URL。
猜你喜欢
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
相关资源
最近更新 更多