我是.htaccess的新用户我现在的网址是:
http://localhost/www.zeeshan.com/details.php?p_id=999
如果我想显示我的网址,那么对我有用。
http://localhost/www.zeeshan.com/details/999
我的.htaccess代码
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /www.zeeshan.com/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^details/([^/]+)$ details.php?p_id=$1 [NC,L]
我的问题是,当使用此链接时,我无法获得正确答案:
http://localhost/www.zeeshan.com/details.php?p_id=999&p_title=nokia%20mobile%20for%20sale
我使用了这个.htaccees代码
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /www.zeeshan.com/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^details/(\d+)-([\w-]+)$ details.php?p_id=$1&p_title=$2 [NC,L]
使用此链接后我想要这样:
http://localhost/www.zeeshan.com/details/999/nokia-mobile-for-sale
我在给定的链接中阅读了很多时间这个主题来解决我的问题,但未能得到正确的输出。每次都有页面未找到错误。 Rewriting URL with .htaccess local in XAMPP
请帮我解决我的问题。
答案 0 :(得分:1)
你的正则表达式实际上是不正确的。使用此规则:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /www.zeeshan.com/
## convert spaces to hyphens
# executes **repeatedly** as long as there are more than 1 spaces in URI
RewriteRule "^(\S*) +(\S* .*)$" $1-$2 [L,NE]
# executes when there is exactly 1 space in URI
RewriteRule "^(\S*) (\S*)$" $1-$2 [L,R=302,NE]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^details/(\d+)/([^/]+)/?$ details.php?p_id=$1&p_title=$2 [NC,L,QSA]