【问题标题】:Mod Rewrite Rule re-writing incorrectlyMod Rewrite Rule 重写不正确
【发布时间】:2012-04-18 22:40:33
【问题描述】:

在我的 .htaccess 文件中,我有以下重写规则

RewriteRule ^([a-z]*)$ work.php?album=$1 [L]

我正在读取根目录中的所有目录并创建类似

的链接

PHP 中的代码

$dir=glob('images/works/*');
$dir_listing=array();
foreach($dir as $list)  
{
if(is_dir($list))
$dir_listing[]= (basename($list));
}
foreach($dir_listing as $folders )  
echo"<a href='$folders' ><img src='Default-thumbnail-folder.jpg' /> </a>";

问题是我在works目录下有三个文件夹{alb,ban,bas}

第一个和最后一个 {alb and bas} 适用于我的重定向规则 URL{siteName/works/bas}

但是第二个 {ban} 会创建一个类似 {siteName/works/ban/} 的 URL,请注意额外的 "/" 会造成问题,似乎对某些人来说造成问题的文件夹名称,所以请帮助我创建正确的重定向规则

我想要一个类似的链接

<a href="alb" >About</a> // to redirect to work.php?content=about

我还注意到,如果浏览器中的 URL 类似于 work/alb/ CSS 未应用 我试过了

<link href="sample.css" rel="stylesheet" type="text/css" />

和

<link href="css/sample.css" rel="stylesheet" type="text/css" />

它不适用于像 {works/about/} 这样的 URL,它适用于 {works/about}

【问题讨论】:

  • 您所问的问题(同时是多个问题 - 但相关)之前已被问过。您可能不知道要搜索什么。对于 CSS 问题,我记得这个问题:Base URL in .htaccess(我敢肯定还有其他相关的问题,这只是一个)。
  • RewriteRule ^([a-z\/]*)$ work.php?album=$1 [L] 这应该可以工作

标签: php mod-rewrite


【解决方案1】:

简单!

尝试将您的重写规则更改为:

RewriteRule ^([a-z]*)/?$ work.php?album=$1 [L]

所以最后的“/”可能出现也可能不出现,在这两种情况下都可以。

【讨论】:

    【解决方案2】:

    为了避免重写 css URI,使用这些规则

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

    至于您的其他问题,您可以在结果 url 上使用修剪以确保您在末尾永远不会有“/” trim($url,'/');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多