Php htaccess重写条件不工作
我正在我的网站的网址工作。我刚刚从中重写了URLPhp htaccess重写条件不工作,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正在我的网站的网址工作。我刚刚从中重写了URL http://www.website.com/index.php?url=some-text 到 为此,我使用以下.htaccess代码 Options +SymLinksIfOwnerMatch RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUES
http://www.website.com/index.php?url=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中添加另一个变量
page number
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]
你不需要两条新规则。只要一个带有可选的
/
就足够了。您的完整代码:
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
。您不需要两个新规则。只要一个带有可选的/
就足够了。您的完整代码:
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
。不,你可以反过来重写。从http://www.website.com/some-text
至http://www.website.com/index.php?url=some-文本
。当用户输入地址时,您总是从原始请求开始查看。注意。这不是服务器配置问题,我没有在这里发布任何服务器配置问题,我知道还有另一个网站可用于服务器配置解决方案,这是htaccess问题。htaccess问题不是服务器配置问题,而是编程问题。你怎么能说这是离题的?为什么这不会出现在stackoverflow上?stackoverflow上有很多htaccess问题。。现在让他们都离题了,我没时间讨论这个问题。但这是错误的,您不能脱离主题。我认为与mod_rewrite相关的问题与编程相关,就像它们与服务器配置相关一样。很多时候,人们正在为他们的web应用程序处理漂亮的URL方案、SEO等,并且在处理一些正则表达式问题时会遇到一些困难。不,你可以反过来重写。从http://www.website.com/some-text
至http://www.website.com/index.php?url=some-文本
。当用户输入地址时,您总是从原始请求开始查看。注意。这不是服务器配置问题,我没有在这里发布任何服务器配置问题,我知道还有另一个网站可用于服务器配置解决方案,这是htaccess问题。htaccess问题不是服务器配置问题,而是编程问题。你怎么能说这是离题的?为什么这不会出现在stackoverflow上?stackoverflow上有很多htaccess问题。。现在让他们都离题了,我没时间讨论这个问题。但这是错误的,您不能脱离主题。我认为与mod_rewrite相关的问题与编程相关,就像它们与服务器配置相关一样。很多时候,人们正在为他们的web应用程序处理漂亮的URL方案、SEO等,并且在处理一些正则表达式问题时遇到一些困难。这是可行的,但现在css和javascript文件没有应用。这是人们在切换到漂亮的URL后遇到的最常见的问题。解决方案很简单:确保您的js、css等始终使用绝对路径,即从http://
或/
@SumitBijvani开始:我也提供了正确的推理,说明了早期代码不起作用的原因。我想这里有些人无法回答自己的问题,这表明他们对这样一个可行且被接受的解决方案投了反对票。@hakre我的问题现在解决了,我的解释也很好,这就是为什么我得到了快速而正确的答案。为什么你认为这个问题不合适?@SumitBijvani:什么样的编程问题?您遇到服务器配置问题,希望了解有关服务器配置的更多信息。更特别的是,您希望了解有关正则表达式的更多信息。但你并没有要求,相反,你所说的都是代码,不起作用。那太粗糙了。您可能会发现用户只是给您代码,因为这对他们来说是一个很容易解决的问题,但是您不会太了解您正在处理的问题,并且只会接受再次提出下一个问题的培训。参见100.000s.htaccess问题,所有问题都很相似,没有一个答案可以解释?它可以工作,但现在css和javascript文件没有应用。这是人们在切换到pretty URL后遇到的最常见问题。解决方案很简单:确保您的js、css等始终使用绝对路径,即从http://
或/
@SumitBijvani开始:我也提供了正确的推理,说明了早期代码不起作用的原因。我想这里有些人无法回答自己的问题,这表明他们对这样一个可行且被接受的解决方案投了反对票。@hakre我的问题现在解决了,我的解释也很好,这就是为什么我得到了快速而正确的答案。为什么你认为这个问题不合适?@SumitBijvani:什么样的编程问题?您遇到服务器配置问题,希望了解有关服务器配置的更多信息。更特别的是,您希望了解有关正则表达式的更多信息。但你并没有要求,相反,你所说的都是代码,不起作用。那太粗糙了。您可能会发现用户只是给您代码,因为这对他们来说是一个很容易解决的问题,但是您不会太了解您正在处理的问题,并且只会接受再次提出下一个问题的培训。参见100.000s.htaccess问题,所有问题都很相似,没有一个答案可以解释?