0

我已经查看了 apache 服务器的每个问题和 reWriteRule 的每个示例......没有任何效果。

我只需 要将http://beta.EXAMPLE.com/profile.php?profile_name=ntgCleaner更改 为 http://beta.EXAMPLE.com/ntgCleaner

我必须查看我的 .htaccess 文件是否正在被读取并检查是否启用了 mod_rewrite并且它们都工作得很好。

出于某种原因,我遇到的例子对我不起作用。这里有一些例子。

RewriteEngine On
RewriteRule /(.*)$ /profile.php?username=$1 

,

RewriteEngine On 
RewriteBase /
RewriteRule ^profile\/(.*)$ ./profile.php?profileId=$1 [L,NC,QSA]

Options +FollowSymlinks
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?profile_name=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?profile_name=$1

但这些都不起作用。这是因为我使用的是子域吗?当我完成网站时,我计划最终将子域从 BETA 切换到 www。

有什么建议吗?

4

2 回答 2

1

试试这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/?$ /profile.php?profile_name=$1 [L,QSA]

您的示例中有很多不同的查询字符串,所以我不确定哪一个是您真正想要的。你有?username=, ?profileId=, ?profile_name=.

于 2012-08-10T18:20:27.897 回答
0

您必须使用条件(RewriteCond),当满足条件时,应用规则(RewriteRule)。因此,当您不使用条件时,不使用规则,因为引擎不知道要使用它。

RewriteCond 必须在 RewriteRule 之前使用,我以这种形式对 web-bots 使用它:

RewriteCond %{REMOTE_HOST} .googlebot.com$ [NC,OR]
RewriteCond %{REMOTE_HOST} .search.msn.com$ [NC,OR]
RewriteCond %{REMOTE_HOST} .kimsufi.com$ [NC]
RewriteRule ^.*$ /errors/404.html [F]
于 2012-08-10T18:37:35.413 回答