2013-09-29 134 views
1

我正在处理我的网站的URL。我刚才重写URL从htaccess重写条件不起作用

http://www.website.com/index.php?url=some-text 

http://www.website.com/some-text 

对于这个我用下面的.htaccess的代码

Options +SymLinksIfOwnerMatch 
RewriteEngine on 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 


现在,我想再添变数​​在URL中。

http://www.website.com/index.php?url=some-text&page=1 

我想重写它像

http://www.website.com/some-text/1/ 
AND 
http://www.website.com/some-text/1 

我曾尝试下面的代码,但由于某种原因,它不工作,它显示我的服务器错误。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)/(.*)$ index.php?url=$1&page=$2 [L,QSA] 
RewriteRule ^(.*)/(.*)/$ index.php?url=$1&page=$2 [L,QSA] 
+0

不,你改写其他方式。从'http:// www.website.com/some-text'到'http://www.website.com/index.php?url = some-text'。随着用户输入地址,您始终会从原始请求开始寻找。请注意。 – hakre

+0

第一个代码是否正常工作,并且只有在添加第二行后才会出现内部服务器错误?另外,如果发生内部服务器错误,请检查该服务器的错误日志,并告知使用原因。它通常包含对您想知道的问题的更好描述,并将其添加到您的问题中。 – hakre

+0

为什么脱主题?请添加评论,以便我能理解我的错误。 –

回答

1

你不需要2条新规则。只有一个可选/就足够了。您的完整代码:

Options +SymLinksIfOwnerMatch -MultiViews 
RewriteEngine on 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?url=$1&page=$2 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([^/]+)/?$ index.php?url=$1 [L,QSA] 

在你的新代码的另一个问题是,RewriteCond没有得到应用,去年RewriteRule因为这些适用于非常仅次于RewriteRule

+0

其工作,但现在的CSS和JavaScript文件不适用。 –

+0

这是人们在切换到漂亮的URL后遇到的最常见问题。解决方法很简单:确保你的js,css等总是使用绝对路径,即以'http://'或'/'开头# – anubhava

+0

没问题..谢谢你的帮助:) –