2017-08-22 30 views
2

有没有办法对我来说,做一个排序通用网址的是这样的:的.htaccess URL重写格式

/News?Today 
/News?Archive 

/News?703 
/News?654 
/News?308 (and so on) 

相反的:

/News?which=Today 
/News?which=Archive 

/News?which=703 
/News?which=654 
/News?which=308 (and so on) 

一个朋友给我提出以下建议,虽然他真的不知道这是正确的htaccess的命令:

RewriteRule /News?Today /News.php?which=Today 
+0

您需要使用的RewriteCond来看看查询字符串,它不是第一个参数与之比较的一部分。 – covener

回答

2

您可以使用此规则在你的站点根目录的.htaccess:

DirectoryIndex Ena.php 

RewriteEngine On 
RewriteBase/

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

RewriteCond %{QUERY_STRING} ^([^=]+)$ 
RewriteRule ^/?$ Ena.php?open=%1 [L] 
+0

我还没有能够测试您的解决方案,我将在未来几天,所以我会保持这个问题更新。 – De1an

+0

是的,我现在也试过你的解决方案。它一直表现得像另一个。这是一种正常的行为吗? – De1an

+0

对不起,但你需要提供更多的细节。你使用了哪个URL进行测试,并得到了什么错误? – anubhava

-1

未测试:

RewriteRule ^/News?(.*)$ /News.php?which=$1 [L,QSA] 

整个事情:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^/News?(.*)$ /News.php?which=$1 [L,QSA] 
</IfModule> 
+1

ifmodule标签在共享托管服务器上是冗余的。 – Luka

+0

好的,所以......我使用了这个命令('RewriteRule ^/News?(。*)$ /News.php?which=$1 [L,QSA]')并将它改为'RewriteRule ^/Ena ?(。*)$ /Ena.php?open=$1 [L,QSA]',并将DirectoryIndex放在Ena.php中,这样我就可以像'/?Services','/?Prices'等那样加载页面。现在,它很好地加载默认页面,但不会加载任何其他页面,id est:当我输入'/?Services'时 - 它加载默认页面,而不是相应的页面。帮帮我? – De1an

+0

rewriterule与查询字符串不匹配。 – covener