0

我想写.htaccess,其中将5个字母作为变量传递给页面,这5个字母是(仅小字母和数字)

例如,如果有人转到 www.abc.com/etd01 我想将 etd01 传递给 www.abc.com/link.php?link=etd01

所以我写了

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ LinkCode.php?LinkCode=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ LinkCode.php?LinkCode=$1

它正在工作,但如果有人打开 www.abc.com/dswdrd 那么它也在传递变量。我想要的是如果长度是 5 他们通过否则什么都不做

是否可以??

不,我已将我的 .htaccess 文件更改为

RewriteEngine On
RewriteRule ^([a-z0-9]{5})/?$ LinkCode.php?LinkCode=$1

但现在当我放置

RewriteRule ^([a-z0-9]{5})/?$ LinkCode.php?LinkCode=$1

在 joomla .htaccess 文件的末尾它不起作用

joomla .htaccess 文件如下

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

RewriteRule ^([a-z0-9]{5})/?$ LinkCode.php?LinkCode=$1

<Files ~ "\.vcf$">
ForceType text/x-vcard
</Files>
4

1 回答 1

2

1) 你有+,这意味着1 或更多。如果您想要 5 请将其替换为{5}.

2)您说您想要“(仅限小字母和数字)”,但您的模板也将匹配大写字母以及减号-和下划线_。我已将它们从模式中删除以符合您的要求。

3)我还将 2 条规则加入 1 条规则(将处理带有和不带斜杠的 URL)。

RewriteEngine On
RewriteRule ^([a-z0-9]{5})/?$ LinkCode.php?LinkCode=$1
于 2012-05-28T11:12:12.330 回答