嗨,我正在尝试制作博客演示,并且已经有了一些漂亮的URL代码。
我有一个网址www.xyz.com
和搜索网址www.xyz.com/search/this+is+a+search+text
在搜索网址中,参数search
是页面名称,而this+is+a+search+text
是我将要解析的参数
我下面已经有一个.htaccess代码
# code to make pretty URLS | we're using this code to achieve /category/slug
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)/([\w-]+)/([\d]+)$ app/post.php?&category=$2&page=$3 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)/([\w-]+)/([\w-]+)$ app/post.php?&category=$2&slug=$3 [L,QSA]
# code to make pretty URLS for search page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)/([\w-]+)/([\d]+)$ app/search.php?&searchstring=$2&page=$3 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)/([\d]+)$ app/index.php?page=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)/([\w-]+)$ app/post.php?category=$2 [L]
我将以下代码用于搜索页面
# code to make pretty URLS for search page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)/([\w-]+)/([\d]+)$ app/search.php&searchstring=$2&page=$3 [L,QSA]
但是在使用代码时,我收到500条内部错误消息,但我无法弄清楚是什么错误!
如果有人能帮助我解决这个问题,我将不胜感激。
答案 0 :(得分:0)
在实现/ category / slug中和对于搜索页面的重写是相同的。搜索请求与第一个匹配-实现重写并运行app / post.php ...
答案 1 :(得分:0)
回答对JarekBaran的后续问题
JarekBaran:实现/ category / slug和搜索页面的重写是相同的。
这意味着RewriteCond
对应于页面索引/搜索页面和搜索页面的漂亮URL代码。
这意味着将始终使用第一个匹配项,因此:
RewriteRule ^/?(.+)/([\w-]+)/([\d]+)$ app/post.php?&category=$2&page=$3 [L,QSA]
总是会在
之前触发 RewriteRule ^/?(.+)/([\w-]+)/([\d]+)$ app/search.php?&searchstring=$2&page=$3 [L,QSA]
这样,您将无法使用搜索功能。您可以考虑添加一个参数来识别是否进行搜索。
答案 2 :(得分:-1)
您的问题是您以(.+)
开头的规则将与任何一项或多项匹配。这意味着您还与/
字符匹配。因此,您的2个参数重定向中有一些将您的网址与3个参数匹配。您最好从这样的内容开始-([a-zA-Z0-9-]+)
您的搜索重写可能应该是这样的-RewriteRule ^/?([a-zA-Z0-9-]+)/([\w+]+)/([\d]+)$ app/search.php?&searchstring=$2&page=$3 [L,QSA]
我测试了torek上的重写,并且可以正常工作。
这表示您的其他规则也都需要更改,因为它们都以(.+)
开头。完成后,您的类别重写将与您的搜索重写冲突。
但是,这可能对您有用:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?category/([\w-]+)/([\d]+)$ app/post.php?&category=$2&page=$3 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?category/([\w-]+)/([\w-]+)$ app/post.php?&category=$2&slug=$3 [L,QSA]
# code to make pretty URLS for search page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?search/([\w+]+)/([\d]+)$ app/search.php?&searchstring=$2&page=$3 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-zA-Z0-9-]+)/([\d]+)$ app/index.php?page=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?category/([\w-]+)$ app/post.php?category=$2 [L]