0

我认为我正在努力实现一个不可能的结果。

场景是 PURL-Mailing,我已经重写了一些 URL 以适应 URL,发送给客户。

客户通过以下域进入站点:http: //domain.com/ UserName

变量UserName代表 GET-Variable,相当于http://domain.com/index.php?user= UserName

我通过以下重写规则实现了这一点:

RewriteBase /

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?name=$1  [QSA] 
#This works perfect and translates to http://domain.com/UserName

RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?name=$1 [L] 
#This achieves the goal but does not reflect in the URI I want:
#http://domain.com/UserName

更进一步,还有一些 Names 在 Name 中包含一个点,例如A.Jackson也需要被视为UserName。由于这些只有 13 个名称,我可以手动实现它们。我不知道如何防止将之后的部分作为文件扩展名处理。有没有办法在 *mod_rewrite* 中为那些编写自定义句柄?如果是这样,有人可以向我解释一下吗?

提前致谢并致以最诚挚的问候!

4

2 回答 2

2

好的试试下面

    RewriteCond %{REQUEST_FILENAME} !(img|要忽略的任何其他文件夹|要忽略的任何其他文件夹|...)
    RewriteCond %{SCRIPT_FILENAME} !-f
    重写规则 ^([a-zA-Z0-9_-]*[\.]*[a-zA-Z0-9_-]+)[/]*$ test.php?name=$1 [L]

用您要忽略的文件夹名称替换“您要忽略的任何其他文件夹”。用“|”分隔每个文件夹

使用 URL 重写功能时,您还必须提供网页中使用的 CSS、图像或任何其他链接的完整路径

于 2013-06-05T10:12:37.347 回答
2

这是你的修复

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]*[\.]*[a-zA-Z0-9_-]+)$ index.php?name=$1  [L]
于 2013-06-05T09:52:40.390 回答