我已经查看了apache服务器的每个问题和reWriteRule的每个示例......没有任何效果。
我只需要改变 http://beta.EXAMPLE.com/profile.php?profile_name=ntgCleaner 至 http://beta.EXAMPLE.com/ntgCleaner
我必须查看是否my .htaccess file is being read并查看if mod_rewrite is enabled并且它们都完美无缺。
出于某种原因,我遇到的例子对我不起作用。以下是一些例子。
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。
有什么建议吗?
答案 0 :(得分: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=
。
答案 1 :(得分:0)
你必须使用条件(RewriteCond),当条件满足时,应用规则(RewriteRule)。因此,当您不使用条件时,不使用规则,因为引擎不知道使用它的原因。
RewriteCond必须在RewriteRule之前使用,我将它用于这种形式的web-bot:
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]