【问题标题】:mod_rewrite friendly urlmod_rewrite 友好的 url
【发布时间】:2011-01-04 05:09:56
【问题描述】:

我一直在尝试向网站添加 mod_rewrite,但它几乎无法正常工作。

这个 URL,“http://domain.com/folder/server/subfolder/index.php”应该重写为“http://domain.com/folder/subfolder/index.php?platform=server

这是我迄今为止尝试的最后一个版本。

RewriteEngine On
RewriteCond %{REQUEST_URI} !(css|images|scripts|js|files)
RewriteRule ^([A-Za-z0-9]+).*/(.*)$ $2?platform=$1& [L]

该规则应该适用于每个 URL,无论没有子文件夹,只有 1 个或 5 个。 我不能做的是让 rewriteRule 做类似 index.php/server/argument2/argument3 之类的事情,因为我必须重写所有代码才能与此兼容。

任何帮助将不胜感激。

【问题讨论】:

    标签: mod-rewrite


    【解决方案1】:

    试试这个规则:

    RewriteRule ^([^/]+)/([^/]+)/(.+) $1/$2?platform=$2 [L]
    

    编辑 如果您想在文档根目录下的子文件夹中使用该规则,并带有任意数量的后续路径段,请尝试以下规则:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/(.+) $2?platform=$1 [L,QSA]
    

    【讨论】:

    • 我认为他也只想要一个不应转发的目录黑名单 ((css|images|scripts|js|files))
    • 我想阻止图片、css、脚本等通过这条规则。并且上面的 RewriteRule 并不能很好地工作,它总是期望: server/subfolder/file.php 我需要它来期望 0 个或多个子文件夹,所以 server/file.php 或 server/subfolder/subfolder/file.php。因为我有像 server/cms/cms.php 和 server/index.php 这样的 URL。
    • 稍作调整,上面的重写规则就起作用了: RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/(.*) $2?platform=$1 [L,QSA]
    猜你喜欢
    • 2012-02-25
    • 2012-12-29
    • 2023-03-12
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    相关资源
    最近更新 更多