문제

로컬로 앱을 개발하고 있습니다 (도메인 이름 아래 u003Cmydomain>.dev).

친절한 URL로 작업하기 위해 다음과 같은 .htaccess를 설정했습니다.

RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

잘 작동합니다. 짜증나게, 온라인에 갈 때는 그리 좋지 않습니다.

http://example.com/issue/my-slug/#23 get 변수를 반환합니다. 왜요?

도움이 되었습니까?

해결책

과거의 경험을 바탕으로 공유 서버 또는 기타 비표준 구성이 있기 때문에 과거의 경험을 바탕으로 재 작성베이스입니다.

RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

다른 팁

나는 그것을 보지 못한다

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

해당 URL과 일치해야하지만 외부 리디렉션을 수행하는 [R] 플래그가있는 유일한 사람입니다. 응용 프로그램의 다른 부분이 리디렉션을 수행하지 않도록 해당 라인을 댓글을 달아보십시오. 제 생각에는 거기가 있다는 것입니다.

대체 URL과 플래그 사이에는 약간의 공백이 누락되었습니다. 다음과 같이 첫 번째 규칙을 단순화 할 수도 있습니다.

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top