我有一台托管网站的服务器。它使用"漂亮的链接"。我在尝试在htaccess文件中创建规则时遇到问题。
在我继续之前,我想参考我用来减少混淆的位置
wwww/
wwww是我所有文件夹内容的网站,它位于wamp创建的www文件夹中
page.php
包含我想以某种方式表达的规则,这位于我网站的根目录
目前我的网站生成如下链接,但不起作用:
www.MYDOMAIN.co.uk/our-services
上面的链接不起作用,但是如果我手动编辑链接并执行此操作它会起作用:
www.MYDOMAIN.co.uk/page.php?q=our-services
我需要找到一种方法在htaccess文件中实现它并让它添加page.php?q=
以下是我的htaccess文件
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . wwww/index.php [L]
</IfModule>
我遇到的问题是在我的主页上生成导航,如果我点击我们服务的链接,它会重定向到页面www.MYDOMAIN.co.uk/our-services
我需要它做的是点击我的根目录中的规则文件page.php
,该目录又使用our-services
或任何查询可能为其提供正确的链接
我知道我的htaccess文件目前正在链接回索引文件,这就是为什么它不起作用,但我尝试了其他方法,如下所示。
ATTEMPT 1 - 这只是404或者带我到一个空白页面
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . wwww/page.php?q=$1 [L]
</IfModule>
ATTEMPT 2
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? /page.php?$1 [L]
</IfModule>
我的其他尝试都很相似,我得到相同的404或空白屏幕。这是我第一次进入重写链接,这解释了我对此缺乏了解。
答案 0 :(得分:1)
好的,请从/wwww/.htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wwww/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)$ page.php?q=$1 [L,QSA]
</IfModule>
如果/wwww/
确实是您的DocumentRoot
,那么请将RewriteBase
行更改为:
RewriteBase /